diff --git a/.env.example b/.env.example index 03238c2..9ea8a2a 100644 --- a/.env.example +++ b/.env.example @@ -4,6 +4,7 @@ DATABASE_URL="" # Redis UPSTASH_REDIS_REST_URL="" UPSTASH_REDIS_REST_TOKEN="" +UPSTASH_REDIS_EXPIRY_SECONDS="" UPSTASH_RATELIMIT_REQUESTS="" UPSTASH_RATELIMIT_SECONDS="" diff --git a/src/env.mjs b/src/env.mjs index 52bf8c8..4c1f2de 100644 --- a/src/env.mjs +++ b/src/env.mjs @@ -8,6 +8,7 @@ const server = z.object({ DATABASE_URL: z.string().url(), UPSTASH_REDIS_REST_URL: z.string().url(), UPSTASH_REDIS_REST_TOKEN: z.string(), + UPSTASH_REDIS_EXPIRY_SECONDS: z.string(), UPSTASH_RATELIMIT_REQUESTS: z.string(), UPSTASH_RATELIMIT_SECONDS: z.string(), NODE_ENV: z.enum(["development", "test", "production"]), @@ -50,6 +51,7 @@ const processEnv = { DATABASE_URL: process.env.DATABASE_URL, UPSTASH_REDIS_REST_URL: process.env.UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN: process.env.UPSTASH_REDIS_REST_TOKEN, + UPSTASH_REDIS_EXPIRY_SECONDS: process.env.UPSTASH_REDIS_EXPIRY_SECONDS, UPSTASH_RATELIMIT_REQUESTS: process.env.UPSTASH_RATELIMIT_REQUESTS, UPSTASH_RATELIMIT_SECONDS: process.env.UPSTASH_RATELIMIT_SECONDS, NODE_ENV: process.env.NODE_ENV, diff --git a/src/server/api/routers/room.ts b/src/server/api/routers/room.ts index 4c0f69a..0165fdd 100644 --- a/src/server/api/routers/room.ts +++ b/src/server/api/routers/room.ts @@ -90,7 +90,8 @@ export const roomRouter = createTRPCRouter({ await redis.set( `${env.APP_ENV}_kv_roomlist_${ctx.session.user.id}`, - roomList + roomList, + { ex: Number(env.UPSTASH_REDIS_EXPIRY_SECONDS) } ); return roomList; @@ -107,7 +108,9 @@ export const roomRouter = createTRPCRouter({ } else { const roomsCount = await ctx.prisma.room.count(); - await redis.set(`${env.APP_ENV}_kv_roomcount_admin`, roomsCount); + await redis.set(`${env.APP_ENV}_kv_roomcount_admin`, roomsCount, { + ex: Number(env.UPSTASH_REDIS_EXPIRY_SECONDS), + }); return roomsCount; } diff --git a/src/server/api/routers/user.ts b/src/server/api/routers/user.ts index f948d73..abd5b2a 100644 --- a/src/server/api/routers/user.ts +++ b/src/server/api/routers/user.ts @@ -21,7 +21,9 @@ export const userRouter = createTRPCRouter({ } else { const usersCount = await ctx.prisma.user.count(); - await redis.set(`${env.APP_ENV}_kv_usercount_admin`, usersCount); + await redis.set(`${env.APP_ENV}_kv_usercount_admin`, usersCount, { + ex: Number(env.UPSTASH_REDIS_EXPIRY_SECONDS), + }); return usersCount; } @@ -90,7 +92,9 @@ export const userRouter = createTRPCRouter({ }, }); - await redis.set(`${env.APP_ENV}_kv_userlist_admin`, users); + await redis.set(`${env.APP_ENV}_kv_userlist_admin`, users, { + ex: Number(env.UPSTASH_REDIS_EXPIRY_SECONDS), + }); return users; } diff --git a/src/server/api/routers/vote.ts b/src/server/api/routers/vote.ts index a11b938..60dd23d 100644 --- a/src/server/api/routers/vote.ts +++ b/src/server/api/routers/vote.ts @@ -17,7 +17,9 @@ export const voteRouter = createTRPCRouter({ } else { const votesCount = await ctx.prisma.vote.count(); - await redis.set(`${env.APP_ENV}_kv_votecount_admin`, votesCount); + await redis.set(`${env.APP_ENV}_kv_votecount_admin`, votesCount, { + ex: Number(env.UPSTASH_REDIS_EXPIRY_SECONDS), + }); return votesCount; } @@ -63,7 +65,8 @@ export const voteRouter = createTRPCRouter({ await redis.set( `${env.APP_ENV}_kv_votes_${input.roomId}`, - votesByRoomId + votesByRoomId, + { ex: Number(env.UPSTASH_REDIS_EXPIRY_SECONDS) } ); return votesByRoomId;