UNPKG

@bitblit/ratchet-epsilon-common

Version:

Tiny adapter to simplify building API gateway Lambda APIS

90 lines 3.52 kB
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