Browse Source

Feature/rename Order to activities in SymbolProfile database schema (#4661)

* Rename Order to activities

* Update changelog
pull/4671/head
Thomas Kaul 2 months ago
committed by GitHub
parent
commit
67db1b0de4
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 24
      apps/api/src/app/admin/admin.service.ts
  3. 8
      apps/api/src/services/queues/data-gathering/data-gathering.service.ts
  4. 24
      apps/api/src/services/symbol-profile/symbol-profile.service.ts
  5. 4
      prisma/schema.prisma

1
CHANGELOG.md

@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- Renamed `Order` to `activities` in the `SymbolProfile` database schema
- Improved the language localization for Turkish (`tr`) - Improved the language localization for Turkish (`tr`)
### Fixed ### Fixed

24
apps/api/src/app/admin/admin.service.ts

@ -227,7 +227,7 @@ export class AdminService {
if (sortColumn === 'activitiesCount') { if (sortColumn === 'activitiesCount') {
orderBy = { orderBy = {
Order: { activities: {
_count: sortDirection _count: sortDirection
} }
}; };
@ -246,10 +246,15 @@ export class AdminService {
select: { select: {
_count: { _count: {
select: { select: {
Order: true, activities: true,
watchedBy: true watchedBy: true
} }
}, },
activities: {
orderBy: [{ date: 'asc' }],
select: { date: true },
take: 1
},
assetClass: true, assetClass: true,
assetSubClass: true, assetSubClass: true,
comment: true, comment: true,
@ -260,11 +265,6 @@ export class AdminService {
isActive: true, isActive: true,
isUsedByUsersWithSubscription: true, isUsedByUsersWithSubscription: true,
name: true, name: true,
Order: {
orderBy: [{ date: 'asc' }],
select: { date: true },
take: 1
},
scraperConfiguration: true, scraperConfiguration: true,
sectors: true, sectors: true,
symbol: true, symbol: true,
@ -311,6 +311,7 @@ export class AdminService {
assetProfiles.map( assetProfiles.map(
async ({ async ({
_count, _count,
activities,
assetClass, assetClass,
assetSubClass, assetSubClass,
comment, comment,
@ -321,7 +322,6 @@ export class AdminService {
isActive, isActive,
isUsedByUsersWithSubscription, isUsedByUsersWithSubscription,
name, name,
Order,
sectors, sectors,
symbol, symbol,
SymbolProfileOverrides SymbolProfileOverrides
@ -383,8 +383,8 @@ export class AdminService {
symbol, symbol,
marketDataItemCount, marketDataItemCount,
sectorsCount, sectorsCount,
activitiesCount: _count.Order, activitiesCount: _count.activities,
date: Order?.[0]?.date, date: activities?.[0]?.date,
isUsedByUsersWithSubscription: isUsedByUsersWithSubscription:
await isUsedByUsersWithSubscription, await isUsedByUsersWithSubscription,
watchedByCount: _count.watchedBy watchedByCount: _count.watchedBy
@ -654,7 +654,7 @@ export class AdminService {
select: { select: {
_count: { _count: {
select: { select: {
Order: { activities: {
where: { where: {
User: { User: {
subscriptions: { subscriptions: {
@ -675,7 +675,7 @@ export class AdminService {
} }
}); });
return _count.Order > 0; return _count.activities > 0;
} }
} }
} }

8
apps/api/src/services/queues/data-gathering/data-gathering.service.ts

@ -433,13 +433,13 @@ export class DataGatheringService {
await this.prismaService.symbolProfile.findMany({ await this.prismaService.symbolProfile.findMany({
orderBy: [{ symbol: 'asc' }], orderBy: [{ symbol: 'asc' }],
select: { select: {
dataSource: true, activities: {
id: true,
Order: {
orderBy: [{ date: 'asc' }], orderBy: [{ date: 'asc' }],
select: { date: true }, select: { date: true },
take: 1 take: 1
}, },
dataSource: true,
id: true,
scraperConfiguration: true, scraperConfiguration: true,
symbol: true symbol: true
}, },
@ -459,7 +459,7 @@ export class DataGatheringService {
); );
}) })
.map((symbolProfile) => { .map((symbolProfile) => {
let date = symbolProfile.Order?.[0]?.date ?? startDate; let date = symbolProfile.activities?.[0]?.date ?? startDate;
if (benchmarkAssetProfileIdMap[symbolProfile.id]) { if (benchmarkAssetProfileIdMap[symbolProfile.id]) {
date = this.getEarliestDate(startDate); date = this.getEarliestDate(startDate);

24
apps/api/src/services/symbol-profile/symbol-profile.service.ts

@ -42,7 +42,7 @@ export class SymbolProfileService {
}) { }) {
return this.prismaService.symbolProfile.findMany({ return this.prismaService.symbolProfile.findMany({
include: { include: {
Order: { activities: {
include: { include: {
User: true User: true
} }
@ -50,8 +50,7 @@ export class SymbolProfileService {
}, },
orderBy: [{ symbol: 'asc' }], orderBy: [{ symbol: 'asc' }],
where: { where: {
isActive: true, activities: withUserSubscription
Order: withUserSubscription
? { ? {
some: { some: {
User: { User: {
@ -65,7 +64,8 @@ export class SymbolProfileService {
subscriptions: { none: { expiresAt: { gt: new Date() } } } subscriptions: { none: { expiresAt: { gt: new Date() } } }
} }
} }
} },
isActive: true
} }
}); });
} }
@ -77,9 +77,9 @@ export class SymbolProfileService {
.findMany({ .findMany({
include: { include: {
_count: { _count: {
select: { Order: true } select: { activities: true }
}, },
Order: { activities: {
orderBy: { orderBy: {
date: 'asc' date: 'asc'
}, },
@ -109,7 +109,7 @@ export class SymbolProfileService {
.findMany({ .findMany({
include: { include: {
_count: { _count: {
select: { Order: true } select: { activities: true }
}, },
SymbolProfileOverrides: true SymbolProfileOverrides: true
}, },
@ -184,8 +184,8 @@ export class SymbolProfileService {
private enhanceSymbolProfiles( private enhanceSymbolProfiles(
symbolProfiles: (SymbolProfile & { symbolProfiles: (SymbolProfile & {
_count: { Order: number }; _count: { activities: number };
Order?: { activities?: {
date: Date; date: Date;
}[]; }[];
SymbolProfileOverrides: SymbolProfileOverrides; SymbolProfileOverrides: SymbolProfileOverrides;
@ -209,11 +209,11 @@ export class SymbolProfileService {
symbolMapping: this.getSymbolMapping(symbolProfile) symbolMapping: this.getSymbolMapping(symbolProfile)
}; };
item.activitiesCount = symbolProfile._count.Order; item.activitiesCount = symbolProfile._count.activities;
delete item._count; delete item._count;
item.dateOfFirstActivity = symbolProfile.Order?.[0]?.date; item.dateOfFirstActivity = symbolProfile.activities?.[0]?.date;
delete item.Order; delete item.activities;
if (item.SymbolProfileOverrides) { if (item.SymbolProfileOverrides) {
item.assetClass = item.assetClass =

4
prisma/schema.prisma

@ -131,6 +131,7 @@ model Order {
isDraft Boolean @default(false) isDraft Boolean @default(false)
quantity Float quantity Float
symbolProfileId String symbolProfileId String
tags Tag[]
type Type type Type
unitPrice Float unitPrice Float
updatedAt DateTime @updatedAt updatedAt DateTime @updatedAt
@ -138,7 +139,6 @@ model Order {
Account Account? @relation(fields: [accountId, accountUserId], references: [id, userId]) Account Account? @relation(fields: [accountId, accountUserId], references: [id, userId])
SymbolProfile SymbolProfile @relation(fields: [symbolProfileId], references: [id]) SymbolProfile SymbolProfile @relation(fields: [symbolProfileId], references: [id])
User User @relation(fields: [userId], onDelete: Cascade, references: [id]) User User @relation(fields: [userId], onDelete: Cascade, references: [id])
tags Tag[]
@@index([accountId]) @@index([accountId])
@@index([date]) @@index([date])
@ -168,6 +168,7 @@ model Settings {
} }
model SymbolProfile { model SymbolProfile {
activities Order[]
assetClass AssetClass? assetClass AssetClass?
assetSubClass AssetSubClass? assetSubClass AssetSubClass?
comment String? comment String?
@ -192,7 +193,6 @@ model SymbolProfile {
url String? url String?
userId String? userId String?
watchedBy User[] @relation("UserWatchlist") watchedBy User[] @relation("UserWatchlist")
Order Order[]
SymbolProfileOverrides SymbolProfileOverrides? SymbolProfileOverrides SymbolProfileOverrides?
User User? @relation(fields: [userId], onDelete: Cascade, references: [id]) User User? @relation(fields: [userId], onDelete: Cascade, references: [id])

Loading…
Cancel
Save