UNPKG

@axinom/mosaic-transactional-inbox-outbox

Version:

This library encapsulates the Mosaic based transactional inbox and outbox pattern

46 lines 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getStoreOutboxMessage = exports.setupOutboxStorage = void 0; const node_crypto_1 = require("node:crypto"); const pg_transactional_outbox_1 = require("pg-transactional-outbox"); const transactional_log_mapper_1 = require("../transactional-log-mapper"); const storeOutboxMessageKey = 'storeOutboxMessage'; /** * Returns a function to store transactional outbox messages. * See the StoreOutboxMessage type for parameter descriptions. */ const setupOutboxStorage = (listenerConfig, logger, config, app) => { const storage = (0, pg_transactional_outbox_1.initializeMessageStorage)(listenerConfig, new transactional_log_mapper_1.TransactionalLogMapper(logger, config.logLevel)); const storeOutboxMessage = async (aggregateId, { aggregateType, messageType, action, }, payload, client, { envelopeOverrides, options, concurrency, lockedUntil, segment, } = {}) => { const metadata = { envelopeOverrides, options, action, }; const message = { id: (0, node_crypto_1.randomUUID)(), aggregateId, payload, aggregateType, messageType, metadata, concurrency: concurrency !== null && concurrency !== void 0 ? concurrency : 'parallel', lockedUntil, segment, }; await storage(message, client); }; if (app) { app.set(storeOutboxMessageKey, storeOutboxMessage); } return storeOutboxMessage; }; exports.setupOutboxStorage = setupOutboxStorage; /** * Retrieve the storeOutboxMessage instance from the MessagingRegistry * @param app * @returns */ const getStoreOutboxMessage = (app) => app.get(storeOutboxMessageKey); exports.getStoreOutboxMessage = getStoreOutboxMessage; //# sourceMappingURL=setup-outbox-storage.js.map