Skip to content

Commit

Permalink
feat(backend): export 'redisPrefix', 'generateRedisPrefix', 'getRedis…
Browse files Browse the repository at this point in the history
…Options' (#11)
  • Loading branch information
fcbvirus0k authored Nov 8, 2024
1 parent 0aa8b8f commit 5388d12
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 19 deletions.
11 changes: 10 additions & 1 deletion packages/backend/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {}
Expand Down
39 changes: 22 additions & 17 deletions packages/backend/redis/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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,
Expand Down
12 changes: 11 additions & 1 deletion packages/teamplay/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -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, {
Expand Down

0 comments on commit 5388d12

Please sign in to comment.