UNPKG

@kurrent/kurrentdb-client

Version:
90 lines 3.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const shared_pb_1 = require("../../generated/shared_pb"); const persistent_pb_1 = require("../../generated/persistent_pb"); const persistent_grpc_pb_1 = require("../../generated/persistent_grpc_pb"); const utils_1 = require("../utils"); const Client_1 = require("../Client"); const constants_1 = require("../constants"); const settingsToGRPC_1 = require("./utils/settingsToGRPC"); Client_1.Client.prototype.createPersistentSubscriptionToAll = async function (groupName, settings, { filter, ...baseOptions } = {}) { if (!(await this.supports(persistent_grpc_pb_1.PersistentSubscriptionsService.create, "all"))) { throw new utils_1.UnsupportedError("createPersistentSubscriptionToAll", "21.10"); } const req = new persistent_pb_1.CreateReq(); const options = new persistent_pb_1.CreateReq.Options(); const allOptions = new persistent_pb_1.CreateReq.AllOptions(); const reqSettings = (0, settingsToGRPC_1.settingsToGRPC)(settings, persistent_pb_1.CreateReq.Settings); switch (settings.startFrom) { case constants_1.START: { allOptions.setStart(new shared_pb_1.Empty()); break; } case constants_1.END: { allOptions.setEnd(new shared_pb_1.Empty()); break; } default: { const position = new persistent_pb_1.CreateReq.Position(); position.setCommitPosition(settings.startFrom.commit.toString(10)); position.setPreparePosition(settings.startFrom.prepare.toString(10)); allOptions.setPosition(position); break; } } if (filter) { const filterOptions = new persistent_pb_1.CreateReq.AllOptions.FilterOptions(); const expression = new persistent_pb_1.CreateReq.AllOptions.FilterOptions.Expression(); if ("prefixes" in filter) { expression.setPrefixList(filter.prefixes); } if ("regex" in filter) { expression.setRegex(filter.regex); } switch (filter.filterOn) { case constants_1.STREAM_NAME: { filterOptions.setStreamIdentifier(expression); break; } case constants_1.EVENT_TYPE: { filterOptions.setEventType(expression); break; } } if (typeof filter.maxSearchWindow === "number") { if (filter.maxSearchWindow <= 0) { throw new Error("MaxSearchWindow must be greater than 0."); } filterOptions.setMax(filter.maxSearchWindow); } else { filterOptions.setCount(new shared_pb_1.Empty()); } if (filter.checkpointInterval <= 0) { throw new Error("CheckpointInterval must be greater than 0."); } filterOptions.setCheckpointintervalmultiplier(filter.checkpointInterval); allOptions.setFilter(filterOptions); } else { allOptions.setNoFilter(new shared_pb_1.Empty()); } options.setGroupName(groupName); options.setSettings(reqSettings); options.setAll(allOptions); req.setOptions(options); utils_1.debug.command("createPersistentSubscriptionToAll: %O", { groupName, settings, options: { filter, ...baseOptions }, }); utils_1.debug.command_grpc("createPersistentSubscriptionToAll: %g", req); return this.execute(persistent_grpc_pb_1.PersistentSubscriptionsClient, "createPersistentSubscriptionToAll", (client) => new Promise((resolve, reject) => { client.create(req, ...this.callArguments(baseOptions), (error) => { if (error) return reject((0, utils_1.convertToCommandError)(error)); return resolve(); }); })); }; //# sourceMappingURL=createPersistentSubscriptionToAll.js.map