@bitblit/ratchet-epsilon-common
Version:
Tiny adapter to simplify building API gateway Lambda APIS
90 lines • 3.52 kB
JavaScript
import { Logger } from '@bitblit/ratchet-common/logger/logger';
import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet';
import { ErrorRatchet } from '@bitblit/ratchet-common/lang/error-ratchet';
import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
import { DateTime } from 'luxon';
import { ContextUtil } from '../../util/context-util.js';
export class AbstractBackgroundManager {
createEntry(type, data) {
const rval = {
type: type,
data: data,
};
return rval;
}
async wrapEntryForInternal(entry, overrideTraceId, overrideTraceDepth) {
const rval = Object.assign({}, entry, {
createdEpochMS: new Date().getTime(),
guid: AbstractBackgroundManager.generateBackgroundGuid(),
traceId: overrideTraceId || ContextUtil.currentTraceId(),
traceDepth: overrideTraceDepth || ContextUtil.currentTraceDepth() + 1,
});
return rval;
}
async addEntryToQueueByParts(type, data, fireStartMessage) {
let rval = null;
const entry = this.createEntry(type, data);
if (entry) {
rval = await this.addEntryToQueue(entry, fireStartMessage);
}
return rval;
}
async addEntriesToQueue(entries, fireStartMessage) {
const rval = [];
for (const eVal of entries) {
try {
const tmp = await this.addEntryToQueue(eVal, false);
rval.push(tmp);
}
catch (err) {
Logger.error('Error processing %j : %s', eVal, err);
rval.push(err['message']);
}
if (fireStartMessage) {
const fireResult = await this.fireStartProcessingRequest();
Logger.silly('FireResult : %s', fireResult);
}
}
return rval;
}
async fireImmediateProcessRequestByParts(type, data) {
let rval = null;
const entry = this.createEntry(type, data);
if (entry) {
rval = await this.fireImmediateProcessRequest(entry);
}
return rval;
}
static generateBackgroundGuid(targetEpochMS = new Date().getTime()) {
const dt = DateTime.fromMillis(targetEpochMS);
return dt.toFormat('yyyy-MM-dd-HH-mm-ss-') + StringRatchet.createType4Guid();
}
static backgroundGuidToPath(prefix, guid) {
let path = StringRatchet.trimToEmpty(prefix);
if (path.length && !path.endsWith('/')) {
path += '/';
}
path += guid.substring(0, 4) + '/' + guid.substring(5, 7) + '/' + guid.substring(8, 10) + '/';
path += guid + '.json';
return path;
}
static pathToBackgroundGuid(prefix, path) {
RequireRatchet.notNullOrUndefined(path, 'path');
let start = 0;
if (!path.endsWith('.json')) {
ErrorRatchet.throwFormattedErr('Cannot extract guid, does not end with .json : %s : %s', path, prefix);
}
if (StringRatchet.trimToNull(prefix)) {
if (!path.startsWith(prefix)) {
ErrorRatchet.throwFormattedErr('Cannot extract guid, does not start with prefix : %s : %s', path, prefix);
}
start = prefix.length;
if (!prefix.endsWith('/')) {
start++;
}
}
start += 11;
return path.substring(start, path.length - 5);
}
}
//# sourceMappingURL=abstract-background-manager.js.map