diff --git a/CHANGELOG.md b/CHANGELOG.md index 177f9e82..a2164145 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Renamed `Order` to `activities` in the `SymbolProfile` database schema - Improved the language localization for Turkish (`tr`) ### Fixed diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index ce8adaf6..79beedea 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -227,7 +227,7 @@ export class AdminService { if (sortColumn === 'activitiesCount') { orderBy = { - Order: { + activities: { _count: sortDirection } }; @@ -246,10 +246,15 @@ export class AdminService { select: { _count: { select: { - Order: true, + activities: true, watchedBy: true } }, + activities: { + orderBy: [{ date: 'asc' }], + select: { date: true }, + take: 1 + }, assetClass: true, assetSubClass: true, comment: true, @@ -260,11 +265,6 @@ export class AdminService { isActive: true, isUsedByUsersWithSubscription: true, name: true, - Order: { - orderBy: [{ date: 'asc' }], - select: { date: true }, - take: 1 - }, scraperConfiguration: true, sectors: true, symbol: true, @@ -311,6 +311,7 @@ export class AdminService { assetProfiles.map( async ({ _count, + activities, assetClass, assetSubClass, comment, @@ -321,7 +322,6 @@ export class AdminService { isActive, isUsedByUsersWithSubscription, name, - Order, sectors, symbol, SymbolProfileOverrides @@ -383,8 +383,8 @@ export class AdminService { symbol, marketDataItemCount, sectorsCount, - activitiesCount: _count.Order, - date: Order?.[0]?.date, + activitiesCount: _count.activities, + date: activities?.[0]?.date, isUsedByUsersWithSubscription: await isUsedByUsersWithSubscription, watchedByCount: _count.watchedBy @@ -654,7 +654,7 @@ export class AdminService { select: { _count: { select: { - Order: { + activities: { where: { User: { subscriptions: { @@ -675,7 +675,7 @@ export class AdminService { } }); - return _count.Order > 0; + return _count.activities > 0; } } } 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 90a26931..0f1537d0 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 @@ -433,13 +433,13 @@ export class DataGatheringService { await this.prismaService.symbolProfile.findMany({ orderBy: [{ symbol: 'asc' }], select: { - dataSource: true, - id: true, - Order: { + activities: { orderBy: [{ date: 'asc' }], select: { date: true }, take: 1 }, + dataSource: true, + id: true, scraperConfiguration: true, symbol: true }, @@ -459,7 +459,7 @@ export class DataGatheringService { ); }) .map((symbolProfile) => { - let date = symbolProfile.Order?.[0]?.date ?? startDate; + let date = symbolProfile.activities?.[0]?.date ?? startDate; if (benchmarkAssetProfileIdMap[symbolProfile.id]) { date = this.getEarliestDate(startDate); 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 a24101e8..30ad1c5f 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -42,7 +42,7 @@ export class SymbolProfileService { }) { return this.prismaService.symbolProfile.findMany({ include: { - Order: { + activities: { include: { User: true } @@ -50,8 +50,7 @@ export class SymbolProfileService { }, orderBy: [{ symbol: 'asc' }], where: { - isActive: true, - Order: withUserSubscription + activities: withUserSubscription ? { some: { User: { @@ -65,7 +64,8 @@ export class SymbolProfileService { subscriptions: { none: { expiresAt: { gt: new Date() } } } } } - } + }, + isActive: true } }); } @@ -77,9 +77,9 @@ export class SymbolProfileService { .findMany({ include: { _count: { - select: { Order: true } + select: { activities: true } }, - Order: { + activities: { orderBy: { date: 'asc' }, @@ -109,7 +109,7 @@ export class SymbolProfileService { .findMany({ include: { _count: { - select: { Order: true } + select: { activities: true } }, SymbolProfileOverrides: true }, @@ -184,8 +184,8 @@ export class SymbolProfileService { private enhanceSymbolProfiles( symbolProfiles: (SymbolProfile & { - _count: { Order: number }; - Order?: { + _count: { activities: number }; + activities?: { date: Date; }[]; SymbolProfileOverrides: SymbolProfileOverrides; @@ -209,11 +209,11 @@ export class SymbolProfileService { symbolMapping: this.getSymbolMapping(symbolProfile) }; - item.activitiesCount = symbolProfile._count.Order; + item.activitiesCount = symbolProfile._count.activities; delete item._count; - item.dateOfFirstActivity = symbolProfile.Order?.[0]?.date; - delete item.Order; + item.dateOfFirstActivity = symbolProfile.activities?.[0]?.date; + delete item.activities; if (item.SymbolProfileOverrides) { item.assetClass = diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 863c196a..7bf69c56 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -131,6 +131,7 @@ model Order { isDraft Boolean @default(false) quantity Float symbolProfileId String + tags Tag[] type Type unitPrice Float updatedAt DateTime @updatedAt @@ -138,7 +139,6 @@ model Order { Account Account? @relation(fields: [accountId, accountUserId], references: [id, userId]) SymbolProfile SymbolProfile @relation(fields: [symbolProfileId], references: [id]) User User @relation(fields: [userId], onDelete: Cascade, references: [id]) - tags Tag[] @@index([accountId]) @@index([date]) @@ -168,6 +168,7 @@ model Settings { } model SymbolProfile { + activities Order[] assetClass AssetClass? assetSubClass AssetSubClass? comment String? @@ -192,7 +193,6 @@ model SymbolProfile { url String? userId String? watchedBy User[] @relation("UserWatchlist") - Order Order[] SymbolProfileOverrides SymbolProfileOverrides? User User? @relation(fields: [userId], onDelete: Cascade, references: [id])