@@ -3,31 +3,56 @@ import { PrismaModule } from './prisma/prisma.module';
33import { UserModule } from './user/user.module' ;
44import { AuthModule } from './auth/auth.module' ;
55import { WorkspaceModule } from './workspaces/workspaces.module' ;
6- import { ConfigModule , ConfigService } from '@nestjs/config' ;
76import { CacheModule } from '@nestjs/cache-manager' ;
8- import { redisStore } from 'cache-manager-redis-store' ;
97import { DocumentModule } from './documents/document.module' ;
108import { RealTimeModule } from './real-Time/real-Time.module' ;
9+ import { Redis } from '@upstash/redis' ;
10+ import { redisStore } from 'cache-manager-redis-store' ;
1111
1212@Module ( {
1313 imports : [
14- //load configuration from .env files golbally..
15- ConfigModule . forRoot ( {
16- isGlobal : true ,
17- envFilePath : '.env' ,
18- } ) ,
19-
20- //2. stepup caching using Redis Store..
2114 CacheModule . registerAsync ( {
2215 isGlobal : true ,
23- imports : [ ConfigModule ] ,
24- useFactory : ( ConfigService : ConfigService ) => ( {
25- store : redisStore ,
26- host : ConfigService . get < string > ( 'redis_Host' ) || 'localhost' ,
27- port : ConfigService . get < number > ( 'redis_Port' ) || 6379 ,
28- ttl : 1000 * 60 * 5 ,
29- } ) ,
30- inject : [ ConfigService ] ,
16+ useFactory : async ( ) => {
17+ if ( process . env . NODE_ENV === 'production' ) {
18+ const redis = new Redis ( {
19+ url : process . env . UPSTASH_REDIS_REST_URL ! ,
20+ token : process . env . UPSTASH_REDIS_REST_TOKEN ! ,
21+ } ) ;
22+
23+ return {
24+ store : {
25+ get : ( key : string ) => redis . get ( key ) ,
26+ set : ( key : string , value : any , options ?: { ttl ?: number } ) =>
27+ redis . set (
28+ key ,
29+ value ,
30+ options ?. ttl ? { ex : options . ttl } : undefined ,
31+ ) ,
32+ del : ( key : string ) => redis . del ( key ) ,
33+ } ,
34+ ttl : 60 * 5 ,
35+ } ;
36+ }
37+
38+ // ✅ Local Redis via Docker
39+ const host = process . env . REDIS_HOST || 'redis' ;
40+ const port = parseInt ( process . env . REDIS_PORT || '6379' , 10 ) ;
41+
42+ return {
43+ store : await redisStore ( {
44+ // Adding socket property for better compatibility
45+ socket : {
46+ host : host ,
47+ port : port ,
48+ } ,
49+ // If socket doesn't work for your version, keep these as fallback
50+ host : host ,
51+ port : port ,
52+ ttl : 60 * 5 ,
53+ } ) ,
54+ } ;
55+ } ,
3156 } ) ,
3257 PrismaModule ,
3358 UserModule ,
@@ -36,7 +61,5 @@ import { RealTimeModule } from './real-Time/real-Time.module';
3661 DocumentModule ,
3762 RealTimeModule ,
3863 ] ,
39- controllers : [ ] ,
40- providers : [ ] ,
4164} )
4265export class AppModule { }
0 commit comments