♻️ refactor: create Redis helper and replace direct Redis access
This commit is contained in:
@ -4,10 +4,11 @@ import { ErrorForwarder } from "../../../helpers/error/instances/forwarder";
|
||||
import { createUserSessionRepository } from "../repositories/createUserSession.repository";
|
||||
import { redis } from "../../../utils/databases/redis/connection";
|
||||
import { jwtEncode } from "../../../helpers/http/jwt/encode";
|
||||
import { createUserSessionInRedisService } from "./internal/createUserSessionInRedis.service";
|
||||
|
||||
export const createUserSessionService = async (
|
||||
userId: string,
|
||||
userHeaderInfo: UserHeaderInformation
|
||||
userHeaderInfo: UserHeaderInformation,
|
||||
) => {
|
||||
try {
|
||||
// set the date when the token will expire
|
||||
@ -29,13 +30,11 @@ export const createUserSessionService = async (
|
||||
const createUserSession = await createUserSessionRepository(constructData);
|
||||
|
||||
// caching user session data into Redis
|
||||
const createRedisKey = `${process.env.APP_NAME}:users:${userId}:sessions:${createUserSession.id}`;
|
||||
await redis.hset(createRedisKey, {
|
||||
await createUserSessionInRedisService({
|
||||
userId,
|
||||
sessionId: createUserSession.id,
|
||||
validUntil: createUserSession.validUntil,
|
||||
});
|
||||
await redis.expire(createRedisKey, Number(process.env.SESSION_EXPIRE));
|
||||
|
||||
// create a jwt token with a payload containing the created user session, then return jwt
|
||||
return jwtEncode(createUserSession);
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
import { AppError } from "../../../../helpers/error/instances/app";
|
||||
import { redis } from "../../../../utils/databases/redis/connection";
|
||||
|
||||
export const createUserSessionInRedisService = async ({
|
||||
userId,
|
||||
sessionId,
|
||||
validUntil,
|
||||
exp,
|
||||
}: {
|
||||
userId: string;
|
||||
sessionId: string;
|
||||
validUntil?: Date;
|
||||
exp?: number;
|
||||
}) => {
|
||||
try {
|
||||
const createRedisKey = `${process.env.APP_NAME}:users:${userId}:sessions:${sessionId}`;
|
||||
await redis.hset(createRedisKey, {
|
||||
userId,
|
||||
sessionId,
|
||||
validUntil: validUntil,
|
||||
});
|
||||
await redis.expire(
|
||||
createRedisKey,
|
||||
exp || Number(process.env.SESSION_CACHE_EXPIRE!),
|
||||
);
|
||||
return true;
|
||||
} catch (error) {
|
||||
throw new AppError(500, "Error creating user session in Redis", error);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user