From 5388d128a8d81fe75d4dd830368ab35d647e2315 Mon Sep 17 00:00:00 2001 From: Pavel Khazov <50324820+fcbvirus0k@users.noreply.github.com> Date: Fri, 8 Nov 2024 16:03:19 +0300 Subject: [PATCH] feat(backend): export 'redisPrefix', 'generateRedisPrefix', 'getRedisOptions' (#11) --- packages/backend/index.js | 11 +++++++++- packages/backend/redis/index.js | 39 +++++++++++++++++++-------------- packages/teamplay/server.js | 12 +++++++++- 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/packages/backend/index.js b/packages/backend/index.js index a62e4e7..63c7602 100644 --- a/packages/backend/index.js +++ b/packages/backend/index.js @@ -7,7 +7,16 @@ import initValidateSchema from './features/validateSchema.js' import initServerAggregate from './features/serverAggregate.js' import initAccessControl from './features/accessControl.js' -export { redis, redlock, Redlock, getRedis, Redis } from './redis/index.js' +export { + prefix as redisPrefix, + generatePrefix as generateRedisPrefix, + getRedisOptions, + redis, + redlock, + Redlock, + getRedis, + Redis +} from './redis/index.js' export { db, mongo, mongoClient, createMongoIndex, sqlite } from './db/index.js' const usersConnectionCounter = {} diff --git a/packages/backend/redis/index.js b/packages/backend/redis/index.js index cbacc4b..cc4506b 100644 --- a/packages/backend/redis/index.js +++ b/packages/backend/redis/index.js @@ -2,23 +2,16 @@ import Redlock from 'redlock' import redisPubSub from 'sharedb-redis-pubsub' import { getRedis, Redis, RedisMock } from './getRedis.js' -const enableRedis = !process.env.NO_REDIS - -const getRedisOptions = { - enable: enableRedis, - opts: process.env.REDIS_OPTS, - url: process.env.REDIS_URL, - keyPrefix: generatePrefix({ - mongoUrl: process.env.MONGO_URL, - baseUrl: process.env.BASE_URL - }) -} - -const RedisClient = enableRedis ? Redis : RedisMock -export { RedisClient as Redis } -export { getRedis } -export const redis = getRedis(getRedisOptions) -export const redisObserver = getRedis(getRedisOptions) +const ENABLE_REDIS = !process.env.NO_REDIS + +const RedisClient = ENABLE_REDIS ? Redis : RedisMock +export { RedisClient as Redis, getRedis, getRedisOptions, generatePrefix } +export const redis = getRedis(getRedisOptions()) +export const redisObserver = getRedis(getRedisOptions()) +export const prefix = generatePrefix({ + mongoUrl: process.env.MONGO_URL, + baseUrl: process.env.BASE_URL +}) export const pubsub = redisPubSub({ client: redis, @@ -29,6 +22,18 @@ export const redlock = getRedlock(redis) export { Redlock } +function getRedisOptions ({ addPrefix = true }) { + const options = { + enable: ENABLE_REDIS, + opts: process.env.REDIS_OPTS, + url: process.env.REDIS_URL + } + + if (addPrefix) options.keyPrefix = prefix + + return options +} + function getRedlock (redis) { return new Redlock([redis], { driftFactor: 0.01, diff --git a/packages/teamplay/server.js b/packages/teamplay/server.js index 7ce5fc6..db5c2b9 100644 --- a/packages/teamplay/server.js +++ b/packages/teamplay/server.js @@ -4,7 +4,17 @@ import { connection, setConnection, setFetchOnly, setPublicOnly } from './orm/co export { default as ShareDB } from 'sharedb' export { default as createBackend, - mongo, mongoClient, createMongoIndex, redis, redlock, sqlite, getRedis, Redis + mongo, + mongoClient, + createMongoIndex, + redis, + redlock, + sqlite, + getRedis, + Redis, + getRedisOptions, + redisPrefix, + generateRedisPrefix } from '@teamplay/backend' export function initConnection (backend, {