Browse Source

Feature/ extend market data with preset by activities count and date

pull/3460/head
José Marinho 1 year ago
committed by Thomas Kaul
parent
commit
cc89719cc2
  1. 42
      apps/api/src/app/admin/admin.service.ts
  2. 4
      libs/common/src/lib/interfaces/admin-market-data.interface.ts

42
apps/api/src/app/admin/admin.service.ts

@ -409,9 +409,13 @@ export class AdminService {
by: ['dataSource', 'symbol'] by: ['dataSource', 'symbol']
}); });
const marketData: AdminMarketDataItem[] = this.exchangeRateDataService const marketDataPromise: Promise<AdminMarketDataItem>[] =
this.exchangeRateDataService
.getCurrencyPairs() .getCurrencyPairs()
.map(({ dataSource, symbol }) => { .map(async ({ dataSource, symbol }) => {
let date: Date = null;
let activitiesCount = 0;
const marketDataItemCount = const marketDataItemCount =
marketDataItems.find((marketDataItem) => { marketDataItems.find((marketDataItem) => {
return ( return (
@ -420,19 +424,45 @@ export class AdminService {
); );
})?._count ?? 0; })?._count ?? 0;
const symbolProfile =
await this.prismaService.symbolProfile.findFirst({
where: { symbol, dataSource }
});
if (symbolProfile?.id) {
const orders = await this.prismaService.order.findMany({
orderBy: { date: 'asc' },
where: { symbolProfileId: symbolProfile.id }
});
activitiesCount = orders.length;
}
if (activitiesCount > 0) {
const earliestId = await this.prismaService.order.findFirst({
orderBy: {
date: 'asc'
},
where: { symbolProfileId: symbolProfile?.id }
});
date = earliestId.date;
}
return { return {
dataSource, activitiesCount,
marketDataItemCount,
symbol,
assetClass: AssetClass.LIQUIDITY, assetClass: AssetClass.LIQUIDITY,
countriesCount: 0, countriesCount: 0,
currency: symbol.replace(DEFAULT_CURRENCY, ''), currency: symbol.replace(DEFAULT_CURRENCY, ''),
dataSource,
date,
id: undefined, id: undefined,
marketDataItemCount,
name: symbol, name: symbol,
sectorsCount: 0 sectorsCount: 0,
symbol
}; };
}); });
const marketData = await Promise.all(marketDataPromise);
return { marketData, count: marketData.length }; return { marketData, count: marketData.length };
} }

4
libs/common/src/lib/interfaces/admin-market-data.interface.ts

@ -6,13 +6,13 @@ export interface AdminMarketData {
} }
export interface AdminMarketDataItem { export interface AdminMarketDataItem {
activitiesCount?: number; activitiesCount: number;
assetClass?: AssetClass; assetClass?: AssetClass;
assetSubClass?: AssetSubClass; assetSubClass?: AssetSubClass;
countriesCount: number; countriesCount: number;
currency: string; currency: string;
dataSource: DataSource; dataSource: DataSource;
date?: Date; date: Date;
id: string; id: string;
isBenchmark?: boolean; isBenchmark?: boolean;
marketDataItemCount: number; marketDataItemCount: number;

Loading…
Cancel
Save