UNPKG

@timescaledb/typeorm

Version:

This is the official TimescaleDB plugin for TypeORM.

53 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCandlesticks = getCandlesticks; const core_1 = require("@timescaledb/core"); const Hypertable_1 = require("../decorators/Hypertable"); const TimeColumn_1 = require("../decorators/TimeColumn"); const debug_1 = require("../debug"); const debug = (0, debug_1.debugTypeOrm)('getCandlesticks'); async function getCandlesticks(options) { const target = this.target; debug(`Getting candlesticks for ${target.name}`); const hypertableOptions = Reflect.getMetadata(Hypertable_1.HYPERTABLE_METADATA_KEY, target); if (!hypertableOptions?.by_range?.column_name) { const error = 'Entity is not a hypertable'; debug(error); throw new Error('Entity is not a hypertable'); } const timeColumnMetadata = Reflect.getMetadata(TimeColumn_1.TIME_COLUMN_METADATA_KEY, target); if (!timeColumnMetadata) { const error = 'Entity must have a column decorated with @TimeColumn'; debug(error); throw new Error('Entity must have a column decorated with @TimeColumn'); } const candlestick = core_1.TimescaleDB.createCandlestickAggregate(this.metadata.tableName, { ...options.config, time_column: timeColumnMetadata.columnName, }); const { sql, params } = candlestick.build({ range: options.timeRange, where: options.where, }); const results = await this.query(sql, params); const result = results.map((row) => ({ bucket_time: new Date(row.bucket_time), open: Number(row.open), high: Number(row.high), low: Number(row.low), close: Number(row.close), open_time: new Date(row.open_time), high_time: new Date(row.high_time), low_time: new Date(row.low_time), close_time: new Date(row.close_time), ...(row.volume ? { volume: Number(row.volume), vwap: Number(row.vwap), } : {}), })); debug('Candlesticks retrieved'); return result; } //# sourceMappingURL=get-candlesticks.js.map