diff --git a/apps/api/src/app/order/order.module.ts b/apps/api/src/app/order/order.module.ts index 3f896dc5e..f2c790ce8 100644 --- a/apps/api/src/app/order/order.module.ts +++ b/apps/api/src/app/order/order.module.ts @@ -8,6 +8,7 @@ import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data- import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data.module'; import { ImpersonationModule } from '@ghostfolio/api/services/impersonation.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma.module'; +import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile.module'; import { Module } from '@nestjs/common'; import { OrderController } from './order.controller'; @@ -22,6 +23,7 @@ import { OrderService } from './order.service'; ImpersonationModule, PrismaModule, RedisCacheModule, + SymbolProfileModule, UserModule ], controllers: [OrderController], diff --git a/apps/api/src/app/order/order.service.ts b/apps/api/src/app/order/order.service.ts index f4ff7bc6d..16971ee38 100644 --- a/apps/api/src/app/order/order.service.ts +++ b/apps/api/src/app/order/order.service.ts @@ -3,6 +3,7 @@ import { CacheService } from '@ghostfolio/api/app/cache/cache.service'; import { DataGatheringService } from '@ghostfolio/api/services/data-gathering.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service'; import { PrismaService } from '@ghostfolio/api/services/prisma.service'; +import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile.service'; import { OrderWithAccount } from '@ghostfolio/common/types'; import { Injectable } from '@nestjs/common'; import { DataSource, Order, Prisma, Type as TypeOfOrder } from '@prisma/client'; @@ -19,7 +20,8 @@ export class OrderService { private readonly cacheService: CacheService, private readonly exchangeRateDataService: ExchangeRateDataService, private readonly dataGatheringService: DataGatheringService, - private readonly prismaService: PrismaService + private readonly prismaService: PrismaService, + private readonly symbolProfileService: SymbolProfileService ) {} public async order( @@ -130,9 +132,15 @@ export class OrderService { public async deleteOrder( where: Prisma.OrderWhereUniqueInput ): Promise { - return this.prismaService.order.delete({ + const order = await this.prismaService.order.delete({ where }); + + if (order.type === 'ITEM') { + await this.symbolProfileService.deleteById(order.symbolProfileId); + } + + return order; } public async getOrders({ diff --git a/apps/api/src/services/symbol-profile.service.ts b/apps/api/src/services/symbol-profile.service.ts index 0b2857338..b3c6a4c21 100644 --- a/apps/api/src/services/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile.service.ts @@ -25,6 +25,12 @@ export class SymbolProfileService { }); } + public async deleteById(id: string) { + return this.prismaService.symbolProfile.delete({ + where: { id } + }); + } + public async getSymbolProfiles( symbols: string[] ): Promise {