✨ feat: add internal endpoint to create banner
This commit is contained in:
@ -0,0 +1,24 @@
|
||||
import { Context } from "elysia";
|
||||
import { mainErrorHandler } from "../../../helpers/error/handler";
|
||||
import { createHeroBannerService } from "../services/http/createHeroBanner.service";
|
||||
|
||||
export interface CreateHeroBannerRequestBody {
|
||||
isClickable?: boolean;
|
||||
title?: string;
|
||||
description?: string;
|
||||
buttonContent?: string;
|
||||
buttonLink?: string;
|
||||
imageUrl?: string;
|
||||
startDate: string;
|
||||
endDate: string;
|
||||
}
|
||||
|
||||
export const createHeroBannerController = async (
|
||||
ctx: Context & { body: CreateHeroBannerRequestBody },
|
||||
) => {
|
||||
try {
|
||||
return await createHeroBannerService(ctx.body);
|
||||
} catch (error) {
|
||||
return mainErrorHandler(ctx.set, error);
|
||||
}
|
||||
};
|
||||
@ -5,6 +5,7 @@ import { createVideoServiceInternalController } from "./controllers/createVideoS
|
||||
import { bulkInsertVideoController } from "./controllers/bulkInsertVideo.controller";
|
||||
import { updateAllEpisodeThumbnailController } from "./controllers/updateAllEpisodeThumbnail.controller";
|
||||
import { purgeUnusedSessionController } from "./controllers/purgeUnusedSession.controller";
|
||||
import { createHeroBannerController } from "./controllers/createHeroBanner.controller";
|
||||
|
||||
export const internalModule = new Elysia({ prefix: "/internal" })
|
||||
.post("/media/bulk-insert", bulkInsertMediaController)
|
||||
@ -12,4 +13,5 @@ export const internalModule = new Elysia({ prefix: "/internal" })
|
||||
.put("/episode/update-thumbnails", updateAllEpisodeThumbnailController)
|
||||
.post("/video/bulk-insert", bulkInsertVideoController)
|
||||
.post("/video-service", createVideoServiceInternalController)
|
||||
.post("/user-session/purge-unused", purgeUnusedSessionController);
|
||||
.post("/user-session/purge-unused", purgeUnusedSessionController)
|
||||
.post("/hero-banner", createHeroBannerController);
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { AppError } from "../../../helpers/error/instances/app";
|
||||
import { prisma } from "../../../utils/databases/prisma/connection";
|
||||
import { generateUUIDv7 } from "../../../helpers/databases/uuidv7";
|
||||
import { SystemAccountId } from "../../../config/account/system";
|
||||
|
||||
export const insertHeroBannerRepository = async (
|
||||
payload: Omit<Prisma.HeroBannerCreateInput, "id" | "createdBy">,
|
||||
) => {
|
||||
try {
|
||||
return await prisma.heroBanner.create({
|
||||
data: {
|
||||
id: generateUUIDv7(),
|
||||
creatorId: SystemAccountId,
|
||||
...payload,
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
throw new AppError(500, "Failed to insert hero banner", error);
|
||||
}
|
||||
};
|
||||
@ -0,0 +1,13 @@
|
||||
import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder";
|
||||
import { CreateHeroBannerRequestBody } from "../../controllers/createHeroBanner.controller";
|
||||
import { insertHeroBannerRepository } from "../../repositories/insertHeroBanner.repository";
|
||||
|
||||
export const createHeroBannerService = async (
|
||||
payload: CreateHeroBannerRequestBody,
|
||||
) => {
|
||||
try {
|
||||
return await insertHeroBannerRepository(payload);
|
||||
} catch (error) {
|
||||
ErrorForwarder(error);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user