diff --git a/apps/api/src/app/order/order.service.ts b/apps/api/src/app/order/order.service.ts index 973565adf..30a0ef07d 100644 --- a/apps/api/src/app/order/order.service.ts +++ b/apps/api/src/app/order/order.service.ts @@ -27,7 +27,8 @@ import { Order, Prisma, Tag, - Type as ActivityType + Type as ActivityType, + SymbolProfile } from '@prisma/client'; import { Big } from 'big.js'; import { endOfToday, isAfter } from 'date-fns'; @@ -50,34 +51,40 @@ export class OrderService { public async assignTags({ dataSource, symbol, - tags, - userId + tags }: { tags: Tag[]; userId: string } & AssetProfileIdentifier) { - const orders = await this.prismaService.order.findMany({ - where: { - userId, - SymbolProfile: { + const symbolProfile: SymbolProfile = + await this.symbolProfileService.getSymbolProfiles([ + { dataSource, symbol } - } - }); - - return Promise.all( - orders.map(({ id }) => - this.prismaService.order.update({ - data: { - tags: { - // The set operation replaces all existing connections with the provided ones - set: tags.map(({ id }) => { - return { id }; - }) + ])[0]; + return await this.symbolProfileService.updateSymbolProfile({ + assetClass: symbolProfile.assetClass, + assetSubClass: symbolProfile.assetSubClass, + countries: symbolProfile.countries, + currency: symbolProfile.currency, + dataSource, + holdings: symbolProfile.holdings, + name: symbolProfile.name, + sectors: symbolProfile.sectors, + symbol, + tags: { + connectOrCreate: tags.map(({ id, name }) => { + return { + create: { + id, + name + }, + where: { + id } - }, - where: { id } + }; }) - ) - ); + }, + url: symbolProfile.url + }); } public async createOrder(