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. 74
      apps/api/src/app/admin/admin.service.ts
  2. 4
      libs/common/src/lib/interfaces/admin-market-data.interface.ts

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

@ -409,30 +409,60 @@ export class AdminService {
by: ['dataSource', 'symbol'] by: ['dataSource', 'symbol']
}); });
const marketData: AdminMarketDataItem[] = this.exchangeRateDataService const marketDataPromise: Promise<AdminMarketDataItem>[] =
.getCurrencyPairs() this.exchangeRateDataService
.map(({ dataSource, symbol }) => { .getCurrencyPairs()
const marketDataItemCount = .map(async ({ dataSource, symbol }) => {
marketDataItems.find((marketDataItem) => { let date: Date = null;
return ( let activitiesCount = 0;
marketDataItem.dataSource === dataSource &&
marketDataItem.symbol === symbol const marketDataItemCount =
); marketDataItems.find((marketDataItem) => {
})?._count ?? 0; return (
marketDataItem.dataSource === dataSource &&
marketDataItem.symbol === symbol
);
})?._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;
}
return { if (activitiesCount > 0) {
dataSource, const earliestId = await this.prismaService.order.findFirst({
marketDataItemCount, orderBy: {
symbol, date: 'asc'
assetClass: AssetClass.LIQUIDITY, },
countriesCount: 0, where: { symbolProfileId: symbolProfile?.id }
currency: symbol.replace(DEFAULT_CURRENCY, ''), });
id: undefined, date = earliestId.date;
name: symbol, }
sectorsCount: 0
}; return {
}); activitiesCount,
assetClass: AssetClass.LIQUIDITY,
countriesCount: 0,
currency: symbol.replace(DEFAULT_CURRENCY, ''),
dataSource,
date,
id: undefined,
marketDataItemCount,
name: symbol,
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