diff --git a/src/modules/heroBanner/controllers/getActiveHeroBanner.controller.ts b/src/modules/heroBanner/controllers/getActiveHeroBanner.controller.ts new file mode 100644 index 0000000..65c454d --- /dev/null +++ b/src/modules/heroBanner/controllers/getActiveHeroBanner.controller.ts @@ -0,0 +1,18 @@ +import { Context } from "elysia"; +import { mainErrorHandler } from "../../../helpers/error/handler"; +import { returnReadResponse } from "../../../helpers/callback/httpResponse"; +import { getActiveHeroBannerService } from "../services/getActiveHeroBanner.service"; + +export const getActiveHeroBannerController = async (ctx: Context) => { + try { + const response = await getActiveHeroBannerService(); + return returnReadResponse( + ctx.set, + 200, + "Active hero banners fetched successfully", + response, + ); + } catch (error) { + return mainErrorHandler(ctx.set, error); + } +}; diff --git a/src/modules/heroBanner/index.ts b/src/modules/heroBanner/index.ts new file mode 100644 index 0000000..5ee94c1 --- /dev/null +++ b/src/modules/heroBanner/index.ts @@ -0,0 +1,7 @@ +import Elysia from "elysia"; +import { getActiveHeroBannerController } from "./controllers/getActiveHeroBanner.controller"; + +export const heroBannerModule = new Elysia({ prefix: "/hero-banner" }).get( + "/", + getActiveHeroBannerController, +); diff --git a/src/modules/heroBanner/repositories/GET/findAllActiveHeroBanner.repository.ts b/src/modules/heroBanner/repositories/GET/findAllActiveHeroBanner.repository.ts new file mode 100644 index 0000000..6b899d9 --- /dev/null +++ b/src/modules/heroBanner/repositories/GET/findAllActiveHeroBanner.repository.ts @@ -0,0 +1,19 @@ +import { AppError } from "../../../../helpers/error/instances/app"; +import { prisma } from "../../../../utils/databases/prisma/connection"; + +export const findAllActiveHeroBannerRepository = async () => { + try { + return await prisma.heroBanner.findMany({ + where: { + startDate: { + lte: new Date(), + }, + endDate: { + gte: new Date(), + }, + }, + }); + } catch (error) { + throw new AppError(500, "Failed to fetch active hero banners", error); + } +}; diff --git a/src/modules/heroBanner/services/getActiveHeroBanner.service.ts b/src/modules/heroBanner/services/getActiveHeroBanner.service.ts new file mode 100644 index 0000000..b6093c9 --- /dev/null +++ b/src/modules/heroBanner/services/getActiveHeroBanner.service.ts @@ -0,0 +1,10 @@ +import { ErrorForwarder } from "../../../helpers/error/instances/forwarder"; +import { findAllActiveHeroBannerRepository } from "../repositories/GET/findAllActiveHeroBanner.repository"; + +export const getActiveHeroBannerService = async () => { + try { + return await findAllActiveHeroBannerRepository(); + } catch (error) { + ErrorForwarder(error); + } +};