diff --git a/src/modules/media/controllers/getAllMedia.controller.ts b/src/modules/media/controllers/getAllMedia.controller.ts new file mode 100644 index 0000000..fdadf8c --- /dev/null +++ b/src/modules/media/controllers/getAllMedia.controller.ts @@ -0,0 +1,20 @@ +import { Context } from "elysia"; +import { mainErrorHandler } from "../../../helpers/error/handler"; +import { getAllMediaService } from "../services/http/getAllMedia.service"; +import { returnReadResponse } from "../../../helpers/callback/httpResponse"; + +export const getAllMediaController = async ( + ctx: Context & { query: { page: string } }, +) => { + try { + const mediaData = await getAllMediaService(ctx.query.page); + return returnReadResponse( + ctx.set, + 200, + "Media fetched successfully", + mediaData, + ); + } catch (error) { + return mainErrorHandler(ctx.set, error); + } +}; diff --git a/src/modules/media/index.ts b/src/modules/media/index.ts index 00a7dee..106d7de 100644 --- a/src/modules/media/index.ts +++ b/src/modules/media/index.ts @@ -1,6 +1,7 @@ import Elysia from "elysia"; +import { getAllMediaController } from "./controllers/getAllMedia.controller"; export const mediaModule = new Elysia({ prefix: "/media" }).get( "/", - () => "Media Module", + getAllMediaController, ); diff --git a/src/modules/media/repositories/GET/getAllMedia.repository.ts b/src/modules/media/repositories/GET/getAllMedia.repository.ts new file mode 100644 index 0000000..30a5ca8 --- /dev/null +++ b/src/modules/media/repositories/GET/getAllMedia.repository.ts @@ -0,0 +1,17 @@ +import { AppError } from "../../../../helpers/error/instances/app"; +import { mediaModel } from "../../model"; + +export const getAllMediaRepository = async (page: number) => { + try { + const limit = 10; + return await mediaModel.findMany({ + take: limit, + skip: (page - 1) * limit, + where: { + deletedAt: null, + }, + }); + } catch (error) { + throw new AppError(500, "Failed to get all media from repository", error); + } +}; diff --git a/src/modules/media/services/http/getAllMedia.service.ts b/src/modules/media/services/http/getAllMedia.service.ts new file mode 100644 index 0000000..88316f4 --- /dev/null +++ b/src/modules/media/services/http/getAllMedia.service.ts @@ -0,0 +1,15 @@ +import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder"; +import { getAllMediaRepository } from "../../repositories/GET/getAllMedia.repository"; + +export const getAllMediaService = async (pagination: string) => { + try { + const page = + /^\d+$/.test(pagination) && Number(pagination) > 0 + ? Number(pagination) + : 1; + + return getAllMediaRepository(page); + } catch (error) { + ErrorForwarder(error); + } +};