From 26bcfd728e5bb9db3a0c7335aff9d9dd9887e824 Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Thu, 26 Feb 2026 21:47:10 +0700 Subject: [PATCH] fix: handle error --- src/controllers/PermissionController.ts | 105 +++++++++++++++++++----- 1 file changed, 84 insertions(+), 21 deletions(-) diff --git a/src/controllers/PermissionController.ts b/src/controllers/PermissionController.ts index 801d4b97..065bc3bf 100644 --- a/src/controllers/PermissionController.ts +++ b/src/controllers/PermissionController.ts @@ -34,10 +34,18 @@ export class PermissionController extends Controller { @Get("") public async getPermission(@Request() request: RequestWithUser) { - const redisClient = await this.redis.createClient({ - host: REDIS_HOST, - port: REDIS_PORT, + const redisClient = this.redis.createClient({ + socket: { + host: REDIS_HOST, + port: parseInt(REDIS_PORT as string) || 6379, + }, }); + + redisClient.on("error", (err: any) => { + console.error("[REDIS] Connection error:", err.message); + }); + + await redisClient.connect(); const getAsync = promisify(redisClient.get).bind(redisClient); let profile: any = await this.profileRepo.findOne({ @@ -113,6 +121,7 @@ export class PermissionController extends Controller { roles: roleAttrData, }; redisClient.setex("role_" + profile.id, 86400, JSON.stringify(reply)); + await redisClient.quit(); } return new HttpSuccess(reply); } @@ -126,10 +135,18 @@ export class PermissionController extends Controller { orgRevisionIsCurrent: true, }, }); - const redisClient = await this.redis.createClient({ - host: REDIS_HOST, - port: REDIS_PORT, + const redisClient = this.redis.createClient({ + socket: { + host: REDIS_HOST, + port: parseInt(REDIS_PORT as string) || 6379, + }, }); + + redisClient.on("error", (err: any) => { + console.error("[REDIS] Connection error:", err.message); + }); + + await redisClient.connect(); const getAsync = promisify(redisClient.get).bind(redisClient); let profileType = "OFFICER"; @@ -229,6 +246,7 @@ export class PermissionController extends Controller { }); redisClient.setex("menu_" + profile.id, 86400, JSON.stringify(reply)); + await redisClient.quit(); } return new HttpSuccess(reply); @@ -307,10 +325,18 @@ export class PermissionController extends Controller { @Path() system: string, @Path() action: string, ) { - const redisClient = await this.redis.createClient({ - host: REDIS_HOST, - port: REDIS_PORT, + const redisClient = this.redis.createClient({ + socket: { + host: REDIS_HOST, + port: parseInt(REDIS_PORT as string) || 6379, + }, }); + + redisClient.on("error", (err: any) => { + console.error("[REDIS] Connection error:", err.message); + }); + + await redisClient.connect(); const getAsync = promisify(redisClient.get).bind(redisClient); let profileType = "OFFICER"; @@ -398,6 +424,7 @@ export class PermissionController extends Controller { redisClient.setex("posMaster_" + profile.id, 86400, JSON.stringify(reply)); } } + await redisClient.quit(); return new HttpSuccess(reply); } @@ -416,10 +443,18 @@ export class PermissionController extends Controller { orgRevisionIsCurrent: true, }, }); - const redisClient = await this.redis.createClient({ - host: REDIS_HOST, - port: REDIS_PORT, + const redisClient = this.redis.createClient({ + socket: { + host: REDIS_HOST, + port: parseInt(REDIS_PORT as string) || 6379, + }, }); + + redisClient.on("error", (err: any) => { + console.error("[REDIS] Connection error:", err.message); + }); + + await redisClient.connect(); const getAsync = promisify(redisClient.get).bind(redisClient); let org = this.PermissionOrg(request, system, action); @@ -499,15 +534,24 @@ export class PermissionController extends Controller { redisClient.setex("user_" + profile.id, 86400, JSON.stringify(reply)); } } + await redisClient.quit(); return new HttpSuccess(reply); } public async getPermissionFunc(@Request() request: RequestWithUser) { - const redisClient = await this.redis.createClient({ - host: REDIS_HOST, - port: REDIS_PORT, + const redisClient = this.redis.createClient({ + socket: { + host: REDIS_HOST, + port: parseInt(REDIS_PORT as string) || 6379, + }, }); + + redisClient.on("error", (err: any) => { + console.error("[REDIS] Connection error:", err.message); + }); + + await redisClient.connect(); const getAsync = promisify(redisClient.get).bind(redisClient); let profile: any = await this.profileRepo.findOne({ @@ -583,6 +627,7 @@ export class PermissionController extends Controller { roles: roleAttrData, }; redisClient.setex("role_" + profile.id, 86400, JSON.stringify(reply)); + await redisClient.quit(); } return reply; } @@ -610,10 +655,18 @@ export class PermissionController extends Controller { } public async listAuthSysOrgFunc(request: RequestWithUser, system: string, action: string) { - const redisClient = await this.redis.createClient({ - host: REDIS_HOST, - port: REDIS_PORT, + const redisClient = this.redis.createClient({ + socket: { + host: REDIS_HOST, + port: parseInt(REDIS_PORT as string) || 6379, + }, }); + + redisClient.on("error", (err: any) => { + console.error("[REDIS] Connection error:", err.message); + }); + + await redisClient.connect(); const getAsync = promisify(redisClient.get).bind(redisClient); let profileType = "OFFICER"; @@ -700,6 +753,7 @@ export class PermissionController extends Controller { redisClient.setex("posMaster_" + profile.id, 86400, JSON.stringify(reply)); } } + await redisClient.quit(); return reply; } @@ -782,10 +836,18 @@ export class PermissionController extends Controller { @Get("checkOrg/{keycloakId}") public async checkOrg(@Path() keycloakId: string) { - const redisClient = await this.redis.createClient({ - host: REDIS_HOST, - port: REDIS_PORT, + const redisClient = this.redis.createClient({ + socket: { + host: REDIS_HOST, + port: parseInt(REDIS_PORT as string) || 6379, + }, }); + + redisClient.on("error", (err: any) => { + console.error("[REDIS] Connection error:", err.message); + }); + + await redisClient.connect(); // const getAsync = promisify(redisClient.get).bind(redisClient); // let profileType = "OFFICER"; @@ -836,6 +898,7 @@ export class PermissionController extends Controller { }; } redisClient.setex("org_" + profile.id, 86400, JSON.stringify(reply)); //Create Redis + await redisClient.quit(); // } else { // const posMaster = await this.posMasterEmpRepository.findOne({ // where: {