From c398354208366c8d28cc06fea0ab679e3fb13de0 Mon Sep 17 00:00:00 2001 From: Adisak Date: Mon, 15 Jun 2026 15:21:15 +0700 Subject: [PATCH] #1596 and revert cronjob --- src/app.ts | 3 +- src/controllers/OrganizationController.ts | 36 +++++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/app.ts b/src/app.ts index 1c81f120..c2cbe5f7 100644 --- a/src/app.ts +++ b/src/app.ts @@ -66,8 +66,7 @@ async function main() { }); // Cron job for updating org revision - every day at 01:00:00 - // const cronTime = "0 0 1 * * *"; - const cronTime = "0 30 14 * * *"; + const cronTime = "0 0 1 * * *"; cron.schedule(cronTime, async () => { try { const orgController = new OrganizationController(); diff --git a/src/controllers/OrganizationController.ts b/src/controllers/OrganizationController.ts index 7edc5998..d1b0cb19 100644 --- a/src/controllers/OrganizationController.ts +++ b/src/controllers/OrganizationController.ts @@ -8702,6 +8702,42 @@ export class OrganizationController extends Controller { }; await queryRunner.commitTransaction(); + + // Clear Redis cache after successful publish + const redis = require("redis"); + const { promisify } = require("util"); + const redisClient = redis.createClient({ + host: process.env.REDIS_HOST || "localhost", + port: parseInt(process.env.REDIS_PORT || "6379"), + }); + const keysAsync = promisify(redisClient.keys).bind(redisClient); + const delAsync = promisify(redisClient.del).bind(redisClient); + + try { + const [posMasterKeys, userKeys, orgKeys, menuKeys, roleKeys] = await Promise.all([ + keysAsync("posMaster_*"), + keysAsync("user_*"), + keysAsync("org_*"), + keysAsync("menu_*"), + keysAsync("role_*"), + ]); + + if (posMasterKeys.length > 0) await delAsync(...posMasterKeys); + if (userKeys.length > 0) await delAsync(...userKeys); + if (orgKeys.length > 0) await delAsync(...orgKeys); + if (menuKeys.length > 0) await delAsync(...menuKeys); + if (roleKeys.length > 0) await delAsync(...roleKeys); + + console.log(`[moveDraftToCurrent] Cleared cache: posMaster=${posMasterKeys.length}, user=${userKeys.length}, org=${orgKeys.length}, menu=${menuKeys.length}, role=${roleKeys.length}`); + } catch (err) { + console.error("[moveDraftToCurrent] Error clearing cache:", err); + } finally { + redisClient.quit(); + } + + // Invalidate memory cache + orgStructureCache.invalidate(currentRevisionId); + return new HttpSuccess(summary); } catch (error) { console.error("Error moving draft to current:", error);