UNPKG

resolve-local-event-broker

Version:

The reSolve framework's event broker for applications on a local machine.

63 lines (55 loc) 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _constants = require("../constants"); const resume = async (pool, payload) => { const { database: { runQuery, escapeId, escapeStr }, invokeOperation, parseSubscription } = pool; const { eventSubscriber } = payload; const subscribersTableNameAsId = escapeId(_constants.SUBSCRIBERS_TABLE_NAME); const input = { type: _constants.PrivateOperationType.RESUME_SUBSCRIBER, payload: { eventSubscriber } }; await invokeOperation(pool, _constants.LazinessStrategy.EAGER, input); for (let attempt = 0;; attempt++) { const result = await runQuery(` SELECT ${subscribersTableNameAsId}."status" AS "status", ${subscribersTableNameAsId}."subscriptionId" AS "subscriptionId" FROM ${subscribersTableNameAsId} WHERE "eventSubscriber" = ${escapeStr(eventSubscriber)} `); if (result == null || result.length !== 1) { throw new Error(`Event subscriber ${eventSubscriber} does not found`); } const { status, subscriptionId } = parseSubscription(result[0]); if (status === _constants.SubscriptionStatus.ERROR) { throw new Error(`Event subscriber ${eventSubscriber} is in error state`); } else if (status === _constants.SubscriptionStatus.DELIVER) { return subscriptionId; } else if (status === _constants.SubscriptionStatus.SKIP && attempt > 10) { throw new Error(`Event subscriber ${eventSubscriber} cannot be resumed after ${attempt} attempts - event bus is too busy`); } else { await new Promise(resolve => setTimeout(resolve, 1000)); } } }; var _default = resume; exports.default = _default; //# sourceMappingURL=resume.js.map