Bugfix/fix create watchlist item for new asset profile (#4625)
* Fix create watchlist item for new asset profile
This commit is contained in:
parent
a5fe259761
commit
d919622932
@ -1,6 +1,9 @@
|
||||
import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module';
|
||||
import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.module';
|
||||
import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module';
|
||||
import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module';
|
||||
import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module';
|
||||
import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module';
|
||||
|
||||
import { Module } from '@nestjs/common';
|
||||
|
||||
@ -10,7 +13,10 @@ import { WatchlistService } from './watchlist.service';
|
||||
@Module({
|
||||
controllers: [WatchlistController],
|
||||
imports: [
|
||||
DataGatheringModule,
|
||||
DataProviderModule,
|
||||
PrismaModule,
|
||||
SymbolProfileModule,
|
||||
TransformDataSourceInRequestModule,
|
||||
TransformDataSourceInResponseModule
|
||||
],
|
||||
|
@ -1,12 +1,20 @@
|
||||
import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service';
|
||||
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
|
||||
import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service';
|
||||
import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service';
|
||||
import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces';
|
||||
|
||||
import { Injectable, NotFoundException } from '@nestjs/common';
|
||||
import { DataSource } from '@prisma/client';
|
||||
import { BadRequestException, Injectable } from '@nestjs/common';
|
||||
import { DataSource, Prisma } from '@prisma/client';
|
||||
|
||||
@Injectable()
|
||||
export class WatchlistService {
|
||||
public constructor(private readonly prismaService: PrismaService) {}
|
||||
public constructor(
|
||||
private readonly dataGatheringService: DataGatheringService,
|
||||
private readonly dataProviderService: DataProviderService,
|
||||
private readonly prismaService: PrismaService,
|
||||
private readonly symbolProfileService: SymbolProfileService
|
||||
) {}
|
||||
|
||||
public async createWatchlistItem({
|
||||
dataSource,
|
||||
@ -24,11 +32,26 @@ export class WatchlistService {
|
||||
});
|
||||
|
||||
if (!symbolProfile) {
|
||||
throw new NotFoundException(
|
||||
`Asset profile not found for ${symbol} (${dataSource})`
|
||||
const assetProfiles = await this.dataProviderService.getAssetProfiles([
|
||||
{ dataSource, symbol }
|
||||
]);
|
||||
|
||||
if (!assetProfiles[symbol]?.currency) {
|
||||
throw new BadRequestException(
|
||||
`Asset profile not found for ${symbol} (${dataSource})`
|
||||
);
|
||||
}
|
||||
|
||||
await this.symbolProfileService.add(
|
||||
assetProfiles[symbol] as Prisma.SymbolProfileCreateInput
|
||||
);
|
||||
}
|
||||
|
||||
await this.dataGatheringService.gatherSymbol({
|
||||
dataSource,
|
||||
symbol
|
||||
});
|
||||
|
||||
await this.prismaService.user.update({
|
||||
data: {
|
||||
watchlist: {
|
||||
|
@ -54,7 +54,7 @@ export class HomePageComponent implements OnDestroy, OnInit {
|
||||
path: ['/home', 'market']
|
||||
},
|
||||
{
|
||||
iconName: 'star-outline',
|
||||
iconName: 'bookmark-outline',
|
||||
label: $localize`Watchlist`,
|
||||
path: ['/home', 'watchlist'],
|
||||
showCondition: this.user?.settings?.isExperimentalFeatures
|
||||
|
Loading…
x
Reference in New Issue
Block a user