28 lines
1.0 KiB
TypeScript
28 lines
1.0 KiB
TypeScript
import { AppError } from "../../../../helpers/error/instances/app";
|
|
import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder";
|
|
import { getMediaIdFromSlugRepository } from "../../../media/repositories/GET/getMediaIdFromSlug.repository";
|
|
import { GetEpisodeDetailsParams } from "../../controllers/getEpisodeDetails.controller";
|
|
import { getEpisodeDetailsRepository } from "../../repositories/GET/getEpisodeDetails.repository";
|
|
|
|
export const getEpisodeDetailsService = async (
|
|
params: GetEpisodeDetailsParams,
|
|
) => {
|
|
try {
|
|
if (!params.mediaSlug || !params.episode)
|
|
throw new AppError(400, "Media slug and episode are required.");
|
|
|
|
const mediaId = await getMediaIdFromSlugRepository(params.mediaSlug);
|
|
if (!mediaId?.id) throw new AppError(404, "Media not found.");
|
|
|
|
const result = await getEpisodeDetailsRepository({
|
|
mediaId: mediaId.id,
|
|
episode: Number(params.episode),
|
|
});
|
|
if (!result) throw new AppError(404, "Episode not found.");
|
|
|
|
return result;
|
|
} catch (error) {
|
|
ErrorForwarder(error);
|
|
}
|
|
};
|