diff --git a/src/helpers/createRedisClientForRepository.ts b/src/helpers/createRedisClientForRepository.ts new file mode 100644 index 0000000..55312fd --- /dev/null +++ b/src/helpers/createRedisClientForRepository.ts @@ -0,0 +1,14 @@ +import { createClient, RedisClientType } from "redis"; +import { REDIS_RECONNECT_INTERVAL } from "../environment"; + +export default function createRedisClientForRepository() { + const client = createClient({ + url: process.env.REDIS_URL, + socket: { + tls: process.env.NODE_ENV === 'production', + rejectUnauthorized: false, + reconnectStrategy: REDIS_RECONNECT_INTERVAL, + }, + }); + return client as RedisClientType; +} diff --git a/src/repositories/BaseRedisRepository.ts b/src/repositories/BaseRedisRepository.ts index f722586..c2ec079 100644 --- a/src/repositories/BaseRedisRepository.ts +++ b/src/repositories/BaseRedisRepository.ts @@ -1,19 +1,12 @@ -import { createClient, RedisClientType } from 'redis'; -import { REDIS_RECONNECT_INTERVAL } from "../environment"; +import { RedisClientType } from 'redis'; import { EventEmitter } from 'stream'; +import createRedisClientForRepository from '../helpers/createRedisClientForRepository'; export abstract class BaseRedisRepository extends EventEmitter { protected redisClient; constructor( - redisClient: RedisClientType = createClient({ - url: process.env.REDIS_URL, - socket: { - tls: process.env.NODE_ENV === 'production', - rejectUnauthorized: false, - reconnectStrategy: REDIS_RECONNECT_INTERVAL, - }, - }), + redisClient: RedisClientType = createRedisClientForRepository(), ) { super(); this.redisClient = redisClient; diff --git a/src/repositories/shuttle/eta/RedisSelfUpdatingETARepository.ts b/src/repositories/shuttle/eta/RedisSelfUpdatingETARepository.ts index 230eca1..1755ec1 100644 --- a/src/repositories/shuttle/eta/RedisSelfUpdatingETARepository.ts +++ b/src/repositories/shuttle/eta/RedisSelfUpdatingETARepository.ts @@ -1,24 +1,17 @@ import { SelfUpdatingETARepository } from "./SelfUpdatingETARepository"; import { BaseRedisETARepository } from "./BaseRedisETARepository"; -import { createClient, RedisClientType } from "redis"; +import { RedisClientType } from "redis"; import { ShuttleGetterRepository, ShuttleRepositoryEvent, ShuttleStopArrival, ShuttleTravelTimeDataIdentifier, ShuttleTravelTimeDateFilterArguments, ShuttleWillArriveAtStopPayload, ShuttleWillLeaveStopPayload } from "../ShuttleGetterRepository"; -import { REDIS_RECONNECT_INTERVAL } from "../../../environment"; import { IEta, IOrderedStop, IShuttle } from "../../../entities/ShuttleRepositoryEntities"; import { ETARepositoryEvent } from "./ETAGetterRepository"; +import createRedisClientForRepository from "../../../helpers/createRedisClientForRepository"; export class RedisSelfUpdatingETARepository extends BaseRedisETARepository implements SelfUpdatingETARepository { private isListening = false; constructor( readonly shuttleRepository: ShuttleGetterRepository, - redisClient: RedisClientType = createClient({ - url: process.env.REDIS_URL, - socket: { - tls: process.env.NODE_ENV === 'production', - rejectUnauthorized: false, - reconnectStrategy: REDIS_RECONNECT_INTERVAL, - }, - }), + redisClient: RedisClientType = createRedisClientForRepository(), private referenceTime: Date | null = null, ) { super(redisClient);