UNPKG

@bitblit/ratchet-epsilon-common

Version:

Tiny adapter to simplify building API gateway Lambda APIS

53 lines 2.06 kB
import { AbstractBackgroundManager } from './manager/abstract-background-manager.js'; import { Logger } from '@bitblit/ratchet-common/logger/logger'; import { ErrorRatchet } from '@bitblit/ratchet-common/lang/error-ratchet'; import { S3CacheRatchet } from '@bitblit/ratchet-aws/s3/s3-cache-ratchet'; export class S3BackgroundTransactionLogger { cfg; s3TransactionLogCacheRatchet; constructor(cfg) { this.cfg = cfg; const err = S3BackgroundTransactionLogger.validateConfig(cfg); if (err.length) { ErrorRatchet.throwFormattedErr('Invalid S3BackgroundTransactionLogger config : %j', err); } this.s3TransactionLogCacheRatchet = new S3CacheRatchet(this.cfg.s3, this.cfg.bucket); } async logTransaction(txLog) { if (txLog) { if (txLog.request?.guid) { await this.s3TransactionLogCacheRatchet.writeObjectToCacheFile(AbstractBackgroundManager.backgroundGuidToPath(this.cfg.prefix, txLog.request.guid), txLog); } else { Logger.warn('Could not write transaction record - no guid defined : %j', txLog); } } else { Logger.silly('Skipping write of null log'); } } async readTransactionLog(txGuid) { const path = AbstractBackgroundManager.backgroundGuidToPath(this.cfg.prefix, txGuid); const log = await this.s3TransactionLogCacheRatchet.fetchCacheFileAsObject(path); return log; } static validateConfig(cfg) { const rval = []; if (cfg) { if (!cfg.s3) { rval.push('You must supply an S3 object'); } if (!cfg.bucket) { rval.push('You must supply a bucket'); } if (!cfg.timeToLiveDays) { rval.push('You must supply a timeToLiveDays'); } } else { rval.push('No config defined'); } return rval; } } //# sourceMappingURL=s3-background-transaction-logger.js.map