@hotmeshio/hotmesh
Version:
Serverless Workflow
38 lines (37 loc) • 1.57 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.StreamServiceFactory = void 0;
const utils_1 = require("../../modules/utils");
const ioredis_1 = require("./providers/redis/ioredis");
const redis_1 = require("./providers/redis/redis");
const nats_1 = require("./providers/nats/nats");
const postgres_1 = require("./providers/postgres/postgres");
class StreamServiceFactory {
static async init(provider, storeProvider, namespace, appId, logger) {
let service;
const providerType = (0, utils_1.identifyProvider)(provider);
if (providerType === 'nats') {
let storeProvider;
if ((0, utils_1.identifyProvider)(storeProvider) === 'redis') {
storeProvider = storeProvider;
}
else {
//ioredis
storeProvider = storeProvider;
}
service = new nats_1.NatsStreamService(provider, storeProvider);
}
else if (providerType === 'postgres') {
service = new postgres_1.PostgresStreamService(provider, storeProvider);
}
else if (providerType === 'redis') {
service = new redis_1.RedisStreamService(provider, storeProvider);
}
else if (providerType === 'ioredis') {
service = new ioredis_1.IORedisStreamService(provider, storeProvider);
} //etc register other providers here
await service.init(namespace, appId, logger);
return service;
}
}
exports.StreamServiceFactory = StreamServiceFactory;
;