@kurrent/kurrentdb-client
Version:
KurrentDB gRPC NodeJS Client SDK
59 lines • 2.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const persistentsubscriptions_pb_1 = require("../../generated/kurrentdb/protocols/v1/persistentsubscriptions_pb");
const persistentsubscriptions_grpc_pb_1 = require("../../generated/kurrentdb/protocols/v1/persistentsubscriptions_grpc_pb");
const utils_1 = require("../utils");
const Client_1 = require("../Client");
const constants_1 = require("../constants");
const semver_1 = __importDefault(require("semver"));
const settingsToGRPC_1 = require("./utils/settingsToGRPC");
Client_1.Client.prototype.createPersistentSubscriptionToStream = async function (streamName, groupName, settings, baseOptions = {}) {
const { serverVersion } = await this.capabilities;
if (semver_1.default.lt(serverVersion, "21.10.1") &&
settings.consumerStrategyName === constants_1.PINNED_BY_CORRELATION) {
console.warn(`Consumer strategy "${constants_1.PINNED_BY_CORRELATION}" requires server version ${serverVersion} or higher. "${constants_1.ROUND_ROBIN}" will be used instead.`);
settings.consumerStrategyName = constants_1.ROUND_ROBIN;
}
const req = new persistentsubscriptions_pb_1.CreateReq();
const options = new persistentsubscriptions_pb_1.CreateReq.Options();
const identifier = (0, utils_1.createStreamIdentifier)(streamName);
const reqSettings = (0, settingsToGRPC_1.settingsToGRPC)(settings, persistentsubscriptions_pb_1.CreateReq.Settings);
// Add deprecated revision option for pre-21.10 support
switch (settings.startFrom) {
case constants_1.START: {
reqSettings.setRevision(BigInt(0).toString(10));
break;
}
case constants_1.END: {
// This is the largest possible value of UInt64
reqSettings.setRevision("18446744073709551615");
break;
}
default: {
reqSettings.setRevision(settings.startFrom.toString(10));
break;
}
}
options.setGroupName(groupName);
options.setStreamIdentifier(identifier);
options.setSettings(reqSettings);
req.setOptions(options);
utils_1.debug.command("createPersistentSubscriptionToStream: %O", {
streamName,
groupName,
settings,
options: baseOptions,
});
utils_1.debug.command_grpc("createPersistentSubscriptionToStream: %g", req);
return this.execute(persistentsubscriptions_grpc_pb_1.PersistentSubscriptionsClient, "createPersistentSubscriptionToStream", (client) => new Promise((resolve, reject) => {
client.create(req, ...this.callArguments(baseOptions), (error) => {
if (error)
return reject((0, utils_1.convertToCommandError)(error));
return resolve();
});
}));
};
//# sourceMappingURL=createPersistentSubscriptionToStream.js.map