resolve-local-event-broker
Version:
The reSolve framework's event broker for applications on a local machine.
54 lines (45 loc) • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _constants = require("../constants");
const pause = async (pool, payload) => {
const {
database: {
runQuery,
runRawQuery,
escapeId,
escapeStr
},
parseSubscription
} = pool;
const subscribersTableNameAsId = escapeId(_constants.SUBSCRIBERS_TABLE_NAME);
await runRawQuery(`
UPDATE ${subscribersTableNameAsId}
SET "status" = ${escapeStr(_constants.SubscriptionStatus.SKIP)}
WHERE "eventSubscriber" = ${escapeStr(payload.eventSubscriber)}
AND "status" <> ${escapeStr(_constants.SubscriptionStatus.ERROR)};
COMMIT;
BEGIN IMMEDIATE;
`);
const result = await runQuery(`
SELECT * FROM ${subscribersTableNameAsId}
WHERE ${subscribersTableNameAsId}."eventSubscriber" =
${escapeStr(payload.eventSubscriber)}
`);
if (result == null || result.length !== 1) {
throw new Error(`Event subscriber ${payload.eventSubscriber} does not found`);
}
const {
status,
subscriptionId
} = parseSubscription(result[0]);
if (status === _constants.SubscriptionStatus.ERROR) {
throw new Error(`Event subscriber ${payload.eventSubscriber} is in error state`);
}
return subscriptionId;
};
var _default = pause;
exports.default = _default;
//# sourceMappingURL=pause.js.map