✨ feat: add endpoint to get all episodes by media
All checks were successful
Integration Tests / integration-tests (pull_request) Successful in 57s
All checks were successful
Integration Tests / integration-tests (pull_request) Successful in 57s
This commit is contained in:
@ -0,0 +1,22 @@
|
|||||||
|
import { Context } from "elysia";
|
||||||
|
import { mainErrorHandler } from "../../../helpers/error/handler";
|
||||||
|
import { returnReadResponse } from "../../../helpers/callback/httpResponse";
|
||||||
|
import { getAllEpisodeFromSpecificMediaService } from "../services/http/getAllEpisodeFromSpecificMedia.service";
|
||||||
|
|
||||||
|
export const getAllEpisodeFromSpecificMediaController = async (
|
||||||
|
ctx: Context & { params: { mediaSlug: string } },
|
||||||
|
) => {
|
||||||
|
try {
|
||||||
|
const episodesData = await getAllEpisodeFromSpecificMediaService(
|
||||||
|
ctx.params.mediaSlug,
|
||||||
|
);
|
||||||
|
return returnReadResponse(
|
||||||
|
ctx.set,
|
||||||
|
200,
|
||||||
|
"Episodes fetched successfully",
|
||||||
|
episodesData,
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
return mainErrorHandler(ctx.set, error);
|
||||||
|
}
|
||||||
|
};
|
||||||
7
src/modules/episode/index.ts
Normal file
7
src/modules/episode/index.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import Elysia from "elysia";
|
||||||
|
import { getAllEpisodeFromSpecificMediaController } from "./controllers/getAllEpisodeFromSpecificMedia.controller";
|
||||||
|
|
||||||
|
export const episodeModule = new Elysia({ prefix: "/episodes/:mediaSlug" }).get(
|
||||||
|
"/",
|
||||||
|
getAllEpisodeFromSpecificMediaController,
|
||||||
|
);
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
import { AppError } from "../../../../helpers/error/instances/app";
|
||||||
|
import { mediaModel } from "../../../media/model";
|
||||||
|
|
||||||
|
export const getAllEpisodeFromMediaRepository = async (mediaSlug: string) => {
|
||||||
|
try {
|
||||||
|
return mediaModel.findUnique({
|
||||||
|
where: { slug: mediaSlug },
|
||||||
|
select: {
|
||||||
|
episodes: {
|
||||||
|
select: {
|
||||||
|
id: true,
|
||||||
|
name: true,
|
||||||
|
episode: true,
|
||||||
|
pictureThumbnail: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
throw new AppError(500, "Failed to fetch episodes from media", error);
|
||||||
|
}
|
||||||
|
};
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
import { AppError } from "../../../../helpers/error/instances/app";
|
||||||
|
import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder";
|
||||||
|
import { getAllEpisodeFromMediaRepository } from "../../repositories/GET/getAllEpisodeFromMedia.repository";
|
||||||
|
|
||||||
|
export const getAllEpisodeFromSpecificMediaService = async (
|
||||||
|
mediaSlug: string,
|
||||||
|
) => {
|
||||||
|
try {
|
||||||
|
const mediaData = await getAllEpisodeFromMediaRepository(mediaSlug);
|
||||||
|
if (!mediaData)
|
||||||
|
throw new AppError(404, `Media with slug ${mediaSlug} not found`);
|
||||||
|
return mediaData.episodes;
|
||||||
|
} catch (error) {
|
||||||
|
ErrorForwarder(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user