Files
zod-backend/src/common/redis/redis.module.ts
Abdalhamid Alhamad 6d6dc1471f feat: add timezone support to user and device entities
- Introduced optional timezone fields in User and Device entities to store user preferences and device timezones.
- Updated request DTOs for login and user updates to include timezone information.
- Enhanced AuthService to handle timezone during device registration and updates.
- Added migration to incorporate timezone fields in the database schema.
2026-01-14 16:12:08 +03:00

60 lines
1.8 KiB
TypeScript

// redis.module.ts (NestJS)
import { createClient } from '@keyv/redis';
import { DynamicModule, Module } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { NotificationModule } from '../modules/notification/notification.module';
import { RedisPubSubService } from './services';
@Module({})
export class RedisModule {
static register(): DynamicModule {
return {
module: RedisModule,
providers: [
{
provide: 'REDIS_PUBLISHER',
useFactory: async (configService: ConfigService) => {
// Skip Redis connection during migration generation
if (process.env.MIGRATIONS_RUN === 'false') {
return null;
}
const redisUrl = configService.get<string>('REDIS_URL');
if (!redisUrl) {
return null;
}
const publisher = createClient({ url: redisUrl });
await publisher.connect();
return publisher;
},
inject: [ConfigService],
},
{
provide: 'REDIS_SUBSCRIBER',
useFactory: async (configService: ConfigService) => {
// Skip Redis connection during migration generation
if (process.env.MIGRATIONS_RUN === 'false') {
return null;
}
const redisUrl = configService.get<string>('REDIS_URL');
if (!redisUrl) {
return null;
}
const subscriber = createClient({ url: redisUrl });
await subscriber.connect();
return subscriber;
},
inject: [ConfigService],
},
RedisPubSubService,
],
exports: [
RedisPubSubService,
'REDIS_PUBLISHER',
'REDIS_SUBSCRIBER',
],
imports: [NotificationModule],
};
}
}