From 438484879d528647826f402bb237334480f0d722 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 29 Dec 2021 17:03:37 +0100 Subject: [PATCH] Bugfix/fix creation of historical data (#594) * Fix creation of historical data (upsert instead of update) * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/admin/admin.controller.ts | 2 +- apps/api/src/services/market-data.service.ts | 17 ++++++++++++----- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13c5c827..36f97dbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fixed the creation of historical data in the admin control panel (upsert instead of update) - Fixed the scrolling issue in the position detail dialog on mobile ## 1.97.0 - 28.12.2021 diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 52ec4998..ab20df27 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 66a1fe50..0e0a2688 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 } }); } }