This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

semble / src / shared / infrastructure / locking / LockServiceFactory.ts
1.0 kB 31 lines
1import { ILockService } from './ILockService'; 2import { RedisLockService } from './RedisLockService'; 3import { InMemoryLockService } from './InMemoryLockService'; 4import { RedisFactory } from '../redis/RedisFactory'; 5import { configService } from '../config'; 6 7export class LockServiceFactory { 8 static create(): ILockService { 9 const useMockPersistence = configService.shouldUseMockPersistence(); 10 if (!useMockPersistence) { 11 try { 12 const redis = RedisFactory.createConnection({ 13 host: process.env.REDIS_HOST || 'localhost', 14 port: parseInt(process.env.REDIS_PORT || '6379'), 15 password: process.env.REDIS_PASSWORD, 16 maxRetriesPerRequest: null, 17 }); 18 19 return new RedisLockService(redis); 20 } catch (error) { 21 console.warn( 22 'Failed to connect to Redis, falling back to in-memory locks:', 23 error, 24 ); 25 return new InMemoryLockService(); 26 } 27 } 28 29 return new InMemoryLockService(); 30 } 31}