mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-16 23:40:32 +00:00
Add createRedisClientForRepository method to deduplicate default Redis client in constructor
This commit is contained in:
14
src/helpers/createRedisClientForRepository.ts
Normal file
14
src/helpers/createRedisClientForRepository.ts
Normal file
@@ -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;
|
||||||
|
}
|
||||||
@@ -1,19 +1,12 @@
|
|||||||
import { createClient, RedisClientType } from 'redis';
|
import { RedisClientType } from 'redis';
|
||||||
import { REDIS_RECONNECT_INTERVAL } from "../environment";
|
|
||||||
import { EventEmitter } from 'stream';
|
import { EventEmitter } from 'stream';
|
||||||
|
import createRedisClientForRepository from '../helpers/createRedisClientForRepository';
|
||||||
|
|
||||||
export abstract class BaseRedisRepository extends EventEmitter {
|
export abstract class BaseRedisRepository extends EventEmitter {
|
||||||
protected redisClient;
|
protected redisClient;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
redisClient: RedisClientType = createClient({
|
redisClient: RedisClientType = createRedisClientForRepository(),
|
||||||
url: process.env.REDIS_URL,
|
|
||||||
socket: {
|
|
||||||
tls: process.env.NODE_ENV === 'production',
|
|
||||||
rejectUnauthorized: false,
|
|
||||||
reconnectStrategy: REDIS_RECONNECT_INTERVAL,
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
this.redisClient = redisClient;
|
this.redisClient = redisClient;
|
||||||
|
|||||||
@@ -1,24 +1,17 @@
|
|||||||
import { SelfUpdatingETARepository } from "./SelfUpdatingETARepository";
|
import { SelfUpdatingETARepository } from "./SelfUpdatingETARepository";
|
||||||
import { BaseRedisETARepository } from "./BaseRedisETARepository";
|
import { BaseRedisETARepository } from "./BaseRedisETARepository";
|
||||||
import { createClient, RedisClientType } from "redis";
|
import { RedisClientType } from "redis";
|
||||||
import { ShuttleGetterRepository, ShuttleRepositoryEvent, ShuttleStopArrival, ShuttleTravelTimeDataIdentifier, ShuttleTravelTimeDateFilterArguments, ShuttleWillArriveAtStopPayload, ShuttleWillLeaveStopPayload } from "../ShuttleGetterRepository";
|
import { ShuttleGetterRepository, ShuttleRepositoryEvent, ShuttleStopArrival, ShuttleTravelTimeDataIdentifier, ShuttleTravelTimeDateFilterArguments, ShuttleWillArriveAtStopPayload, ShuttleWillLeaveStopPayload } from "../ShuttleGetterRepository";
|
||||||
import { REDIS_RECONNECT_INTERVAL } from "../../../environment";
|
|
||||||
import { IEta, IOrderedStop, IShuttle } from "../../../entities/ShuttleRepositoryEntities";
|
import { IEta, IOrderedStop, IShuttle } from "../../../entities/ShuttleRepositoryEntities";
|
||||||
import { ETARepositoryEvent } from "./ETAGetterRepository";
|
import { ETARepositoryEvent } from "./ETAGetterRepository";
|
||||||
|
import createRedisClientForRepository from "../../../helpers/createRedisClientForRepository";
|
||||||
|
|
||||||
export class RedisSelfUpdatingETARepository extends BaseRedisETARepository implements SelfUpdatingETARepository {
|
export class RedisSelfUpdatingETARepository extends BaseRedisETARepository implements SelfUpdatingETARepository {
|
||||||
private isListening = false;
|
private isListening = false;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
readonly shuttleRepository: ShuttleGetterRepository,
|
readonly shuttleRepository: ShuttleGetterRepository,
|
||||||
redisClient: RedisClientType = createClient({
|
redisClient: RedisClientType = createRedisClientForRepository(),
|
||||||
url: process.env.REDIS_URL,
|
|
||||||
socket: {
|
|
||||||
tls: process.env.NODE_ENV === 'production',
|
|
||||||
rejectUnauthorized: false,
|
|
||||||
reconnectStrategy: REDIS_RECONNECT_INTERVAL,
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
private referenceTime: Date | null = null,
|
private referenceTime: Date | null = null,
|
||||||
) {
|
) {
|
||||||
super(redisClient);
|
super(redisClient);
|
||||||
|
|||||||
Reference in New Issue
Block a user