diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a7ff835d..ba09ee8a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the static portfolio analysis rule: Emergency fund setup by supporting assets +- Restricted the historical market data gathering to active asset profiles + +## 2.148.0 - 2025-03-24 + +### Added + +- Added the `isActive` flag to the asset profile model + +### Changed + +- Improved the language localization for German (`de`) +- Upgraded `ngx-skeleton-loader` from version `9.0.0` to `10.0.0` ## 2.147.0 - 2025-03-22 diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index a761bbbae..409ce7160 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -83,7 +83,7 @@ export class AdminController { @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async gatherMax(): Promise { const assetProfileIdentifiers = - await this.dataGatheringService.getAllAssetProfileIdentifiers(); + await this.dataGatheringService.getAllActiveAssetProfileIdentifiers(); await this.dataGatheringService.addJobsToQueue( assetProfileIdentifiers.map(({ dataSource, symbol }) => { @@ -110,7 +110,7 @@ export class AdminController { @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async gatherProfileData(): Promise { const assetProfileIdentifiers = - await this.dataGatheringService.getAllAssetProfileIdentifiers(); + await this.dataGatheringService.getAllActiveAssetProfileIdentifiers(); await this.dataGatheringService.addJobsToQueue( assetProfileIdentifiers.map(({ dataSource, symbol }) => { diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 4d9613ee7..729049fd1 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -300,6 +300,7 @@ export class ImportService { figiShareClass, holdings, id, + isActive, isin, name, scraperConfiguration, @@ -375,6 +376,7 @@ export class ImportService { figiShareClass, holdings, id, + isActive, isin, name, scraperConfiguration, diff --git a/apps/api/src/services/cron.service.ts b/apps/api/src/services/cron.service.ts index 7a1b30b5f..088348d85 100644 --- a/apps/api/src/services/cron.service.ts +++ b/apps/api/src/services/cron.service.ts @@ -57,7 +57,7 @@ export class CronService { public async runEverySundayAtTwelvePm() { if (await this.isDataGatheringEnabled()) { const assetProfileIdentifiers = - await this.dataGatheringService.getAllAssetProfileIdentifiers(); + await this.dataGatheringService.getAllActiveAssetProfileIdentifiers(); await this.dataGatheringService.addJobsToQueue( assetProfileIdentifiers.map(({ dataSource, symbol }) => { diff --git a/apps/api/src/services/queues/data-gathering/data-gathering.service.ts b/apps/api/src/services/queues/data-gathering/data-gathering.service.ts index b3e7de0b3..90a269315 100644 --- a/apps/api/src/services/queues/data-gathering/data-gathering.service.ts +++ b/apps/api/src/services/queues/data-gathering/data-gathering.service.ts @@ -159,7 +159,8 @@ export class DataGatheringService { ); if (!assetProfileIdentifiers) { - assetProfileIdentifiers = await this.getAllAssetProfileIdentifiers(); + assetProfileIdentifiers = + await this.getAllActiveAssetProfileIdentifiers(); } if (assetProfileIdentifiers.length <= 0) { @@ -296,11 +297,14 @@ export class DataGatheringService { ); } - public async getAllAssetProfileIdentifiers(): Promise< + public async getAllActiveAssetProfileIdentifiers(): Promise< AssetProfileIdentifier[] > { const symbolProfiles = await this.prismaService.symbolProfile.findMany({ - orderBy: [{ symbol: 'asc' }] + orderBy: [{ symbol: 'asc' }], + where: { + isActive: true + } }); return symbolProfiles @@ -370,9 +374,11 @@ export class DataGatheringService { withUserSubscription?: boolean; }): Promise { const symbolProfiles = - await this.symbolProfileService.getSymbolProfilesByUserSubscription({ - withUserSubscription - }); + await this.symbolProfileService.getActiveSymbolProfilesByUserSubscription( + { + withUserSubscription + } + ); const assetProfileIdentifiersWithCompleteMarketData = await this.getAssetProfileIdentifiersWithCompleteMarketData(); @@ -436,6 +442,9 @@ export class DataGatheringService { }, scraperConfiguration: true, symbol: true + }, + where: { + isActive: true } }) ) diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index 0dae63311..e9c568cef 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -35,6 +35,41 @@ export class SymbolProfileService { }); } + public async getActiveSymbolProfilesByUserSubscription({ + withUserSubscription = false + }: { + withUserSubscription?: boolean; + }) { + return this.prismaService.symbolProfile.findMany({ + include: { + Order: { + include: { + User: true + } + } + }, + orderBy: [{ symbol: 'asc' }], + where: { + isActive: true, + Order: withUserSubscription + ? { + some: { + User: { + Subscription: { some: { expiresAt: { gt: new Date() } } } + } + } + } + : { + every: { + User: { + Subscription: { none: { expiresAt: { gt: new Date() } } } + } + } + } + } + }); + } + public async getSymbolProfiles( aAssetProfileIdentifiers: AssetProfileIdentifier[] ): Promise { @@ -91,40 +126,6 @@ export class SymbolProfileService { }); } - public async getSymbolProfilesByUserSubscription({ - withUserSubscription = false - }: { - withUserSubscription?: boolean; - }) { - return this.prismaService.symbolProfile.findMany({ - include: { - Order: { - include: { - User: true - } - } - }, - orderBy: [{ symbol: 'asc' }], - where: { - Order: withUserSubscription - ? { - some: { - User: { - Subscription: { some: { expiresAt: { gt: new Date() } } } - } - } - } - : { - every: { - User: { - Subscription: { none: { expiresAt: { gt: new Date() } } } - } - } - } - } - }); - } - public updateSymbolProfile({ assetClass, assetSubClass, @@ -133,6 +134,7 @@ export class SymbolProfileService { currency, dataSource, holdings, + isActive, name, scraperConfiguration, sectors, @@ -149,6 +151,7 @@ export class SymbolProfileService { countries, currency, holdings, + isActive, name, scraperConfiguration, sectors, diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index c9e19c53c..6e2cd1480 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -2651,7 +2651,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -2663,7 +2663,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -6651,7 +6651,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 99 + 100 @@ -6659,7 +6659,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 100 + 101 @@ -6667,7 +6667,7 @@ Neutral libs/ui/src/lib/i18n.ts - 103 + 104 @@ -6971,7 +6971,7 @@ United States libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7828,6 +7828,14 @@ 249 + + United Kingdom + United Kingdom + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 7856c54a9..3631d1eff 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -2818,7 +2818,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -2830,7 +2830,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -6079,7 +6079,7 @@ Extreme Angst libs/ui/src/lib/i18n.ts - 99 + 100 @@ -6087,7 +6087,7 @@ Extreme Gier libs/ui/src/lib/i18n.ts - 100 + 101 @@ -6095,7 +6095,7 @@ Neutral libs/ui/src/lib/i18n.ts - 103 + 104 @@ -6971,7 +6971,7 @@ USA libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7828,6 +7828,14 @@ 249 + + United Kingdom + Vereinigtes Königreich + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 849a78541..a04b42725 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -2819,7 +2819,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -2831,7 +2831,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -6080,7 +6080,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 99 + 100 @@ -6088,7 +6088,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 100 + 101 @@ -6096,7 +6096,7 @@ Neutral libs/ui/src/lib/i18n.ts - 103 + 104 @@ -6972,7 +6972,7 @@ United States libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7829,6 +7829,14 @@ 249 + + United Kingdom + United Kingdom + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index c98c68ab0..51bf580c5 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1354,7 +1354,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -1366,7 +1366,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -6079,7 +6079,7 @@ Extreme Peur libs/ui/src/lib/i18n.ts - 99 + 100 @@ -6087,7 +6087,7 @@ Extreme Cupidité libs/ui/src/lib/i18n.ts - 100 + 101 @@ -6095,7 +6095,7 @@ Neutre libs/ui/src/lib/i18n.ts - 103 + 104 @@ -6971,7 +6971,7 @@ Etats-Unis libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7828,6 +7828,14 @@ 249 + + United Kingdom + United Kingdom + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 0505e93c2..287357bc7 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -2819,7 +2819,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -2831,7 +2831,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -6080,7 +6080,7 @@ Paura estrema libs/ui/src/lib/i18n.ts - 99 + 100 @@ -6088,7 +6088,7 @@ Avidità estrema libs/ui/src/lib/i18n.ts - 100 + 101 @@ -6096,7 +6096,7 @@ Neutrale libs/ui/src/lib/i18n.ts - 103 + 104 @@ -6972,7 +6972,7 @@ Stati Uniti libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7829,6 +7829,14 @@ 249 + + United Kingdom + United Kingdom + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 9a8650127..75478862e 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -2818,7 +2818,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -2830,7 +2830,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -6079,7 +6079,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 99 + 100 @@ -6087,7 +6087,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 100 + 101 @@ -6095,7 +6095,7 @@ Neutral libs/ui/src/lib/i18n.ts - 103 + 104 @@ -6971,7 +6971,7 @@ United States libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7828,6 +7828,14 @@ 249 + + United Kingdom + United Kingdom + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 92fcf19eb..5017598b0 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -2307,7 +2307,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -2319,7 +2319,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -6055,7 +6055,7 @@ Skrajny Strach libs/ui/src/lib/i18n.ts - 99 + 100 @@ -6063,7 +6063,7 @@ Skrajna Zachłanność libs/ui/src/lib/i18n.ts - 100 + 101 @@ -6071,7 +6071,7 @@ Neutralny libs/ui/src/lib/i18n.ts - 103 + 104 @@ -6971,7 +6971,7 @@ Stany Zjednoczone libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7828,6 +7828,14 @@ 249 + + United Kingdom + United Kingdom + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 9f6992c3d..9258dea10 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1226,7 +1226,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -1238,7 +1238,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -6079,7 +6079,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 99 + 100 @@ -6087,7 +6087,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 100 + 101 @@ -6095,7 +6095,7 @@ Neutral libs/ui/src/lib/i18n.ts - 103 + 104 @@ -6971,7 +6971,7 @@ United States libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7828,6 +7828,14 @@ 249 + + United Kingdom + United Kingdom + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 6fe85d263..8f0b60c0f 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -2155,7 +2155,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -2167,7 +2167,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -6079,7 +6079,7 @@ Aşırı Korku libs/ui/src/lib/i18n.ts - 99 + 100 @@ -6087,7 +6087,7 @@ Aşırı Açgözlülük libs/ui/src/lib/i18n.ts - 100 + 101 @@ -6095,7 +6095,7 @@ Nötr libs/ui/src/lib/i18n.ts - 103 + 104 @@ -6971,7 +6971,7 @@ United States libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7828,6 +7828,14 @@ 249 + + United Kingdom + United Kingdom + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index e5bb9f649..bc3f708ce 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -2779,7 +2779,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -2791,7 +2791,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -7505,7 +7505,7 @@ Сполучені Штати libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7513,7 +7513,7 @@ Екстремальний страх libs/ui/src/lib/i18n.ts - 99 + 100 @@ -7521,7 +7521,7 @@ Екстремальна жадібність libs/ui/src/lib/i18n.ts - 100 + 101 @@ -7529,7 +7529,7 @@ Нейтрально libs/ui/src/lib/i18n.ts - 103 + 104 @@ -7828,6 +7828,14 @@ 249 + + United Kingdom + United Kingdom + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 0c83713be..51c50ec50 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -2170,7 +2170,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -2181,7 +2181,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -5566,21 +5566,21 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 99 + 100 Extreme Greed libs/ui/src/lib/i18n.ts - 100 + 101 Neutral libs/ui/src/lib/i18n.ts - 103 + 104 @@ -6254,7 +6254,7 @@ United States libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7077,6 +7077,13 @@ 249 + + United Kingdom + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 7adf16b1b..62e76d15a 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -2316,7 +2316,7 @@ libs/ui/src/lib/i18n.ts - 101 + 102 @@ -2328,7 +2328,7 @@ libs/ui/src/lib/i18n.ts - 102 + 103 @@ -6112,7 +6112,7 @@ 极度恐惧 libs/ui/src/lib/i18n.ts - 99 + 100 @@ -6120,7 +6120,7 @@ 极度贪婪 libs/ui/src/lib/i18n.ts - 100 + 101 @@ -6128,7 +6128,7 @@ 中性的 libs/ui/src/lib/i18n.ts - 103 + 104 @@ -6972,7 +6972,7 @@ United States libs/ui/src/lib/i18n.ts - 96 + 97 @@ -7829,6 +7829,14 @@ 249 + + United Kingdom + United Kingdom + + libs/ui/src/lib/i18n.ts + 96 + + diff --git a/libs/common/src/lib/personal-finance-tools.ts b/libs/common/src/lib/personal-finance-tools.ts index 936f3c6f6..3f15c80a2 100644 --- a/libs/common/src/lib/personal-finance-tools.ts +++ b/libs/common/src/lib/personal-finance-tools.ts @@ -44,6 +44,15 @@ export const personalFinanceTools: Product[] = [ pricingPerYear: '$120', slogan: 'Analyze and track your portfolio.' }, + { + founded: 2022, + hasFreePlan: false, + key: 'asseta', + languages: ['English'], + name: 'Asseta', + origin: 'United States', + slogan: 'The Intelligent Family Office Suite' + }, { hasFreePlan: false, hasSelfHostingAbility: true, @@ -149,6 +158,14 @@ export const personalFinanceTools: Product[] = [ pricingPerYear: '$70', slogan: 'Do money better with Copilot' }, + { + founded: 2023, + hasFreePlan: false, + key: 'danti', + name: 'Danti', + origin: 'United Kingdom', + slogan: 'Digitising Generational Wealth' + }, { founded: 2020, key: 'de.fi', diff --git a/libs/ui/src/lib/i18n.ts b/libs/ui/src/lib/i18n.ts index 4c09a4fc0..62b7d162a 100644 --- a/libs/ui/src/lib/i18n.ts +++ b/libs/ui/src/lib/i18n.ts @@ -93,6 +93,7 @@ const locales = { Switzerland: $localize`Switzerland`, Thailand: $localize`Thailand`, Ukraine: $localize`Ukraine`, + 'United Kingdom': $localize`United Kingdom`, 'United States': $localize`United States`, // Fear and Greed Index diff --git a/package-lock.json b/package-lock.json index a7a6cacae..820c67bb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.147.0", + "version": "2.148.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.147.0", + "version": "2.148.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { @@ -76,7 +76,7 @@ "ng-extract-i18n-merge": "2.14.1", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", - "ngx-skeleton-loader": "9.0.0", + "ngx-skeleton-loader": "10.0.0", "ngx-stripe": "19.0.0", "open-color": "1.9.1", "papaparse": "5.3.1", @@ -25625,16 +25625,16 @@ } }, "node_modules/ngx-skeleton-loader": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-9.0.0.tgz", - "integrity": "sha512-aO4/V6oGdZGNcTjasTg/fwzJJYl/ZmNKgCukOEQdUK3GSFOZtB/3GGULMJuZ939hk3Hzqh1OBiLfIM1SqTfhqg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-10.0.0.tgz", + "integrity": "sha512-TYrWLrdRtzoZoPzurNDUJdAbdyplqgyDztCefEi+clHl5MSumwG4NrGxZC1OVxz7RitomhnF7wTM8T/j+tdwXw==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0" + "@angular/common": ">=18.0.0", + "@angular/core": ">=18.0.0" } }, "node_modules/ngx-stripe": { diff --git a/package.json b/package.json index 0ff2745d9..36dff821f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.147.0", + "version": "2.148.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", @@ -122,7 +122,7 @@ "ng-extract-i18n-merge": "2.14.1", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", - "ngx-skeleton-loader": "9.0.0", + "ngx-skeleton-loader": "10.0.0", "ngx-stripe": "19.0.0", "open-color": "1.9.1", "papaparse": "5.3.1", diff --git a/prisma/migrations/20250324072407_added_is_active_to_symbol_profile/migration.sql b/prisma/migrations/20250324072407_added_is_active_to_symbol_profile/migration.sql new file mode 100644 index 000000000..690f709df --- /dev/null +++ b/prisma/migrations/20250324072407_added_is_active_to_symbol_profile/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "SymbolProfile" ADD COLUMN "isActive" BOOLEAN NOT NULL DEFAULT true; + +-- CreateIndex +CREATE INDEX "SymbolProfile_isActive_idx" ON "SymbolProfile"("isActive"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 371a3fcd8..29c98788f 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -181,6 +181,7 @@ model SymbolProfile { figiShareClass String? holdings Json? @default("[]") id String @id @default(uuid()) + isActive Boolean @default(true) isin String? name String? updatedAt DateTime @updatedAt @@ -199,6 +200,7 @@ model SymbolProfile { @@index([currency]) @@index([cusip]) @@index([dataSource]) + @@index([isActive]) @@index([isin]) @@index([name]) @@index([symbol])