From 9dbca0ff51915a36d495baef1a94d94041a78aaa Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Wed, 29 Dec 2021 10:50:02 +0100 Subject: [PATCH] Fix creation of historical data (upsert instead of update) --- apps/api/src/app/admin/admin.controller.ts | 2 +- apps/api/src/services/market-data.service.ts | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 52ec4998c..ab20df270 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -215,7 +215,7 @@ export class AdminController { const date = new Date(dateString); return this.marketDataService.updateMarketData({ - data, + data: { ...data, dataSource }, where: { date_symbol: { date, diff --git a/apps/api/src/services/market-data.service.ts b/apps/api/src/services/market-data.service.ts index 66a1fe50a..0e0a26883 100644 --- a/apps/api/src/services/market-data.service.ts +++ b/apps/api/src/services/market-data.service.ts @@ -1,8 +1,9 @@ +import { UpdateMarketDataDto } from '@ghostfolio/api/app/admin/update-market-data.dto'; import { DateQuery } from '@ghostfolio/api/app/portfolio/interfaces/date-query.interface'; import { PrismaService } from '@ghostfolio/api/services/prisma.service'; import { resetHours } from '@ghostfolio/common/helper'; import { Injectable } from '@nestjs/common'; -import { MarketData, Prisma } from '@prisma/client'; +import { DataSource, MarketData, Prisma } from '@prisma/client'; @Injectable() export class MarketDataService { @@ -67,14 +68,20 @@ export class MarketDataService { } public async updateMarketData(params: { - data: Prisma.MarketDataUpdateInput; + data: { dataSource: DataSource } & UpdateMarketDataDto; where: Prisma.MarketDataWhereUniqueInput; }): Promise { const { data, where } = params; - return this.prismaService.marketData.update({ - data, - where + return this.prismaService.marketData.upsert({ + where, + create: { + dataSource: data.dataSource, + date: where.date_symbol.date, + marketPrice: data.marketPrice, + symbol: where.date_symbol.symbol + }, + update: { marketPrice: data.marketPrice } }); } }