UNPKG

resolve-local-event-broker

Version:

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

100 lines (90 loc) 2.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _constants = require("../constants"); const reset = async (pool, payload) => { const { database: { runQuery, runRawQuery, escapeStr, escapeId, encodeJsonPath }, parseSubscription, invokeConsumer, generateGuid } = pool; const { eventSubscriber } = payload; const subscribersTableNameAsId = escapeId(_constants.SUBSCRIBERS_TABLE_NAME); const nextSubscriptionId = generateGuid(eventSubscriber); const result = await runQuery(` SELECT ${subscribersTableNameAsId}."subscriptionId" AS "subscriptionId", ${subscribersTableNameAsId}."deliveryStrategy" AS "deliveryStrategy", ${subscribersTableNameAsId}."queueStrategy" AS "queueStrategy", ${subscribersTableNameAsId}."eventTypes" AS "eventTypes", ${subscribersTableNameAsId}."aggregateIds" AS "aggregateIds", ${subscribersTableNameAsId}."properties" AS "properties" FROM ${subscribersTableNameAsId} WHERE "eventSubscriber" = ${escapeStr(eventSubscriber)} `); if (result == null || result.length !== 1) { throw new Error(`Event subscriber ${eventSubscriber} does not found`); } const { subscriptionId, deliveryStrategy, queueStrategy, eventTypes, aggregateIds, properties } = parseSubscription(result[0]); await runRawQuery(` DELETE FROM ${subscribersTableNameAsId} WHERE "subscriptionId" = ${escapeStr(subscriptionId)}; INSERT OR IGNORE INTO ${subscribersTableNameAsId}( "subscriptionId", "eventSubscriber", "status", "deliveryStrategy", "eventTypes", "aggregateIds", "properties", "queueStrategy", "maxParallel", "successEvent", "failedEvent", "errors", "cursor" ) VALUES ( ${escapeStr(nextSubscriptionId)}, ${escapeStr(eventSubscriber)}, ${escapeStr(_constants.SubscriptionStatus.SKIP)}, ${escapeStr(deliveryStrategy)}, ${escapeStr(eventTypes != null ? `{ ${eventTypes.map(eventType => `${JSON.stringify(encodeJsonPath(eventType))}: true`).join(', ')} }` : 'null')}, ${escapeStr(aggregateIds != null ? `{ ${aggregateIds.map(aggregateId => `${JSON.stringify(encodeJsonPath(aggregateId))}: true`).join(', ')} }` : 'null')}, ${escapeStr(properties != null ? JSON.stringify(properties) : 'null')}, ${escapeStr(queueStrategy)}, ${+1}, NULL, NULL, NULL, NULL ); COMMIT; BEGIN IMMEDIATE; `); if (deliveryStrategy === _constants.DeliveryStrategy.ACTIVE_NONE || deliveryStrategy === _constants.DeliveryStrategy.ACTIVE_REGULAR || deliveryStrategy === _constants.DeliveryStrategy.ACTIVE_XA) { await invokeConsumer(pool, _constants.ConsumerMethod.Drop, { eventSubscriber }); } return subscriptionId; }; var _default = reset; exports.default = _default; //# sourceMappingURL=reset.js.map