♻️ refactor: refine payload before sending to frontend
All checks were successful
Integration Tests / integration-tests (pull_request) Successful in 47s
All checks were successful
Integration Tests / integration-tests (pull_request) Successful in 47s
This commit is contained in:
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user