Skip to content

Commit

Permalink
Extract and name to improve legibility
Browse files Browse the repository at this point in the history
Refs: #1834
  • Loading branch information
erkannt committed Sep 4, 2024
1 parent c734567 commit 0db3be5
Showing 1 changed file with 25 additions and 24 deletions.
49 changes: 25 additions & 24 deletions src/Redis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,31 @@ import { DeprecatedEnvVars } from './env.js'

export class DeprecatedLoggerEnv extends Context.Tag('DeprecatedLoggerEnv')<DeprecatedLoggerEnv, L.LoggerEnv>() {}

export const redisLifecycle = Effect.acquireRelease(
const makeRedis = Effect.gen(function* () {
const env = yield* DeprecatedEnvVars
const loggerEnv = yield* DeprecatedLoggerEnv
const redis = new IoRedis(env.REDIS_URI.href, { commandTimeout: 2 * 1000, enableAutoPipelining: true })

redis.on('connect', () => L.debug('Redis connected')(loggerEnv)())
redis.on('close', () => L.debug('Redis connection closed')(loggerEnv)())
redis.on('reconnecting', () => L.info('Redis reconnecting')(loggerEnv)())
redis.removeAllListeners('error')
redis.on('error', (error: Error) => L.errorP('Redis connection error')({ error: error.message })(loggerEnv)())

return redis
})

const teardownRedis = (redis: IoRedis) =>
Effect.gen(function* () {
const env = yield* DeprecatedEnvVars
const loggerEnv = yield* DeprecatedLoggerEnv
const redis = new IoRedis(env.REDIS_URI.href, { commandTimeout: 2 * 1000, enableAutoPipelining: true })

redis.on('connect', () => L.debug('Redis connected')(loggerEnv)())
redis.on('close', () => L.debug('Redis connection closed')(loggerEnv)())
redis.on('reconnecting', () => L.info('Redis reconnecting')(loggerEnv)())
redis.removeAllListeners('error')
redis.on('error', (error: Error) => L.errorP('Redis connection error')({ error: error.message })(loggerEnv)())
yield* Effect.promise(() =>
redis
.quit()
.then(() => L.debug('Redis disconnected')(loggerEnv)())
.catch((error: unknown) =>
L.warnP('Redis unable to disconnect')({ error: toError(error).message })(loggerEnv)(),
),
)
})

return redis
}),
redis =>
Effect.gen(function* () {
const loggerEnv = yield* DeprecatedLoggerEnv
yield* Effect.promise(() =>
redis
.quit()
.then(() => L.debug('Redis disconnected')(loggerEnv)())
.catch((error: unknown) =>
L.warnP('Redis unable to disconnect')({ error: toError(error).message })(loggerEnv)(),
),
)
}),
)
export const redisLifecycle = Effect.acquireRelease(makeRedis, teardownRedis)

0 comments on commit 0db3be5

Please sign in to comment.