♻️ refactor: refine payload before sending to frontend
All checks were successful
Integration Tests / integration-tests (pull_request) Successful in 47s

This commit is contained in:
2026-03-25 17:55:48 +07:00
parent dd70f9f9d4
commit 4001aec6ef

View File

@ -8,26 +8,31 @@ import { findAllActiveHeroBannerRepository } from "../repositories/GET/findAllAc
export const getActiveHeroBannerService = async () => { export const getActiveHeroBannerService = async () => {
try { try {
// Check if Hero Banner is enabled in system preferences // Check if Hero Banner is enabled in system preferences
const isHeroBannerEnabled = await findSystemPreferenceService( const isHeroBannerEnabled = await findSystemPreferenceService("HERO_BANNER_ENABLED", "boolean");
"HERO_BANNER_ENABLED", if (!isHeroBannerEnabled) throw new AppError(403, "Hero Banner is disabled");
"boolean",
);
if (!isHeroBannerEnabled)
throw new AppError(403, "Hero Banner is disabled");
// Try to get active banners from Redis cache // Try to get active banners from Redis cache
const cachedBanners = await redis.get( const cachedBanners = await redis.get(`${redisKey.filter((key) => key.name === "HERO_BANNER")[0].key}`);
`${redisKey.filter((key) => key.name === "HERO_BANNER")[0].key}`,
);
if (cachedBanners) return JSON.parse(cachedBanners); if (cachedBanners) return JSON.parse(cachedBanners);
// If not in cache, fetch from database and cache the result // If not in cache, fetch from database and cache the result
const activeBanners = await findAllActiveHeroBannerRepository(); const activeBanners = await findAllActiveHeroBannerRepository();
const constructedBanners = activeBanners.map((banner) => ({
id: banner.media.id,
title: banner.media.title,
slug: banner.media.slug,
imageUrl: banner.imageUrl || banner.media.pictureLarge,
synopsis: banner.media.synopsis,
genres: banner.media.genres.map((genre) => ({
slug: genre.slug,
name: genre.name,
})),
}));
await redis.set( await redis.set(
`${redisKey.filter((key) => key.name === "HERO_BANNER")[0].key}`, `${redisKey.filter((key) => key.name === "HERO_BANNER")[0].key}`,
JSON.stringify(activeBanners), JSON.stringify(constructedBanners),
); );
return activeBanners; return constructedBanners;
} catch (error) { } catch (error) {
ErrorForwarder(error); ErrorForwarder(error);
} }