Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 40x 40x 40x 40x | import { CurrentEpochModel, FirstUpdateAfterBlock, FirstUpdateAfterBlockModel, LastRetireModel, PoolsModel } from './types'; import { Logger } from 'ts-log'; import { Pool } from 'pg'; import { contextLogger } from '@cardano-sdk/util'; import { findCurrentEpoch, findFirstUpdateAfterBlock, findLastRetire, findPools } from './queries'; import { mapFirstUpdateAfterBlock } from './mappers'; export class BlockfrostCacheBuilder { #db: Pool; #logger: Logger; constructor(db: Pool, logger: Logger) { this.#db = db; this.#logger = contextLogger(logger, 'builder'); } async getCurrentEpoch() { this.#logger.debug('Going to query current epoch'); const result = await this.#db.query<CurrentEpochModel>(findCurrentEpoch); return result.rows[0].epoch_no; } async getFirstUpdateAfterBlock(id: string, blockNo: number): Promise<FirstUpdateAfterBlock | undefined> { this.#logger.debug(`Going to query first update for pool ${id} after block ${blockNo}`); const result = await this.#db.query<FirstUpdateAfterBlockModel>(findFirstUpdateAfterBlock, [id, blockNo]); return result.rows.map(mapFirstUpdateAfterBlock)[0]; } async getLastRetire(id: string): Promise<LastRetireModel | undefined> { this.#logger.debug(`Going to query last retire for pool ${id}`); const result = await this.#db.query<LastRetireModel>(findLastRetire, [id]); return result.rows[0]; } async getPools(cacheTtl: number) { const since = Date.now() - cacheTtl * 60_000; this.#logger.debug('Going to query stake pools to be refreshed'); const result = await this.#db.query<PoolsModel>(findPools, [since]); this.#logger.debug('Stake pools to refresh', result.rowCount); return result.rows; } } |