@bitblit/ratchet-epsilon-common
Version:
Tiny adapter to simplify building API gateway Lambda APIS
53 lines • 2.06 kB
JavaScript
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