Compare commits
3 Commits
26909154ab
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| dade012888 | |||
| 4001aec6ef | |||
| dd70f9f9d4 |
@ -20,6 +20,25 @@ export const findAllActiveHeroBannerRepository = async () => {
|
|||||||
startDate: "asc",
|
startDate: "asc",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
select: {
|
||||||
|
orderPriority: true,
|
||||||
|
imageUrl: true,
|
||||||
|
media: {
|
||||||
|
select: {
|
||||||
|
id: true,
|
||||||
|
title: true,
|
||||||
|
slug: true,
|
||||||
|
pictureLarge: true,
|
||||||
|
synopsis: true,
|
||||||
|
genres: {
|
||||||
|
select: {
|
||||||
|
slug: true,
|
||||||
|
name: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new AppError(500, "Failed to fetch active hero banners", error);
|
throw new AppError(500, "Failed to fetch active hero banners", error);
|
||||||
|
|||||||
@ -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