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 | 38x 38x 38x 38x 7x 7x 7x 7x 5x 18x 18x 18x 8x | import * as Queries from './queries';
import { Cardano } from '@cardano-sdk/core';
import { Logger } from 'ts-log';
import { Pool, QueryResult } from 'pg';
import { TxMetadataModel, TxMetadataService } from './types';
import { hexStringToBuffer } from '@cardano-sdk/util';
import { mapTxMetadataByHashes } from './util';
export type TxMetadataByHashes = Map<Cardano.TransactionId, Cardano.TxMetadata>;
export const createDbSyncMetadataService = (db: Pool, logger: Logger): TxMetadataService => ({
async queryTxMetadataByHashes(hashes: Cardano.TransactionId[]): Promise<TxMetadataByHashes> {
const byteHashes = hashes.map((hash) => hexStringToBuffer(hash));
logger.debug('About to find metadata for txs:', hashes);
const result = await db.query<TxMetadataModel>({
name: 'tx_metadata',
text: Queries.findTxMetadataByTxHashes,
values: [byteHashes]
});
if (result.rows.length === 0) return new Map();
return mapTxMetadataByHashes(result.rows);
},
async queryTxMetadataByRecordIds(ids: string[]): Promise<TxMetadataByHashes> {
logger.debug('About to find metadata for transactions with ids:', ids);
const result: QueryResult<TxMetadataModel> = await db.query({
name: 'tx_metadata_by_tx_ids',
text: Queries.findTxMetadataByTxIds,
values: [ids]
});
if (result.rows.length === 0) return new Map();
return mapTxMetadataByHashes(result.rows);
}
});
|