UNPKG

flexiblepersistence

Version:
61 lines 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Write = void 0; const __1 = require(".."); class Write { constructor(event, read, options) { this.options = options; this._eventDB = event; this._read = read; } getPersistence() { return this._eventDB; } getRead() { return this._read; } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types async resolvePromises(promises, resolve, reject) { if (this.options?.isInSeries) { for (let index = 0; index < promises.length; index++) { const promise = promises[index]; await Promise.resolve(promise) .then((value) => index === promises.length - 1 ? resolve(value) : undefined) .catch(reject); } } else { await Promise.all(promises) .then((value) => resolve(value[value.length - 1])) .catch(reject); } } addEvent(event) { return new Promise(async (resolve, reject) => { const promises = []; const operation = __1.Operation[event.getOperation()]; if (!this.options?.drop?.[operation]) { // console.log('EVENT CREATE', operation, this._eventDB); promises.push(this._eventDB.create({ scheme: 'events', item: event, })); } if (this._read) promises.push(this._read.newEvent(event)); await this.resolvePromises(promises, resolve, reject); }); } read(input) { // console.log('EVENT READ', this._eventDB); return this._eventDB.read(input ? input : { scheme: 'events' }); } clear() { return this._eventDB.delete({ scheme: 'events', single: false, }); } } exports.Write = Write; //# sourceMappingURL=write.js.map