Compare commits
2 Commits
d6fa5efaff
...
dea8c6b7ce
| Author | SHA1 | Date | |
|---|---|---|---|
| dea8c6b7ce | |||
| c1f90c40f2 |
@ -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