Browse Source

Improve performance of historical market data query

pull/8061/head
Thomas Kaul 1 week ago
parent
commit
82f20bf023
  1. 11
      apps/api/src/services/data-provider/data-provider.service.ts

11
apps/api/src/services/data-provider/data-provider.service.ts

@ -403,12 +403,8 @@ export class DataProviderService implements OnModuleInit {
})}::timestamp` })}::timestamp`
: Prisma.empty; : Prisma.empty;
const dataSources = aItems.map(({ dataSource }) => { const assetProfileIdentifiers = aItems.map(({ dataSource, symbol }) => {
return dataSource; return Prisma.sql`(${dataSource}::"DataSource", ${symbol})`;
});
const symbols = aItems.map(({ symbol }) => {
return symbol;
}); });
try { try {
@ -416,8 +412,7 @@ export class DataProviderService implements OnModuleInit {
.$queryRaw` .$queryRaw`
SELECT * SELECT *
FROM "MarketData" FROM "MarketData"
WHERE "dataSource"::text IN (${Prisma.join(dataSources)}) WHERE ("dataSource", "symbol") IN (${Prisma.join(assetProfileIdentifiers)})
AND "symbol" IN (${Prisma.join(symbols)})
${granularityQuery} ${granularityQuery}
${rangeQuery} ${rangeQuery}
ORDER BY date;`; ORDER BY date;`;

Loading…
Cancel
Save