From 794a130562ec8f2c5c82143926c891ce159d3fc5 Mon Sep 17 00:00:00 2001 From: Rafi Arrafif Date: Wed, 25 Mar 2026 11:37:06 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20add=20cache=20flush=20modul?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/clearHeroBanner.controller.ts | 8 ++++++++ src/modules/flushCache/index.ts | 4 ++++ .../flushCache/services/clearHeroBanner.service.ts | 12 ++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 src/modules/flushCache/controllers/clearHeroBanner.controller.ts create mode 100644 src/modules/flushCache/index.ts create mode 100644 src/modules/flushCache/services/clearHeroBanner.service.ts diff --git a/src/modules/flushCache/controllers/clearHeroBanner.controller.ts b/src/modules/flushCache/controllers/clearHeroBanner.controller.ts new file mode 100644 index 0000000..a7529a3 --- /dev/null +++ b/src/modules/flushCache/controllers/clearHeroBanner.controller.ts @@ -0,0 +1,8 @@ +import { Context } from "elysia"; +import { returnWriteResponse } from "../../../helpers/callback/httpResponse"; +import { clearHeroBannerService } from "../services/clearHeroBanner.service"; + +export const clearHeroBannerController = async (ctx: { set: Context["set"] }) => { + const cacheCleared = await clearHeroBannerService(); + return returnWriteResponse(ctx.set, 200, "Hero banner cache flushed successfully", cacheCleared); +}; diff --git a/src/modules/flushCache/index.ts b/src/modules/flushCache/index.ts new file mode 100644 index 0000000..0665009 --- /dev/null +++ b/src/modules/flushCache/index.ts @@ -0,0 +1,4 @@ +import Elysia from "elysia"; +import { clearHeroBannerController } from "./controllers/clearHeroBanner.controller"; + +export const flushCacheModule = new Elysia({ prefix: "/flush-cache" }).put("/hero-banner", clearHeroBannerController); diff --git a/src/modules/flushCache/services/clearHeroBanner.service.ts b/src/modules/flushCache/services/clearHeroBanner.service.ts new file mode 100644 index 0000000..d01aadb --- /dev/null +++ b/src/modules/flushCache/services/clearHeroBanner.service.ts @@ -0,0 +1,12 @@ +import { redisKey } from "../../../config/redis/key"; +import { AppError } from "../../../helpers/error/instances/app"; +import { redis } from "../../../utils/databases/redis/connection"; + +export const clearHeroBannerService = async () => { + try { + const cache = await redis.del(redisKey.find((key) => key.name === "HERO_BANNER")?.key || ""); + return cache > 0; // Returns true if cache was cleared, false if it was not found + } catch (error) { + throw new AppError(500, "Failed to clear hero banner cache", error); + } +};