Files
AnimeTV-Backend/src/modules/internal/services/http/bulkInsertEpisode.service.ts
2026-01-31 08:13:04 +07:00

43 lines
1.5 KiB
TypeScript

import { getEpisodeReferenceAPI } from "../../../../config/apis/episode.reference";
import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder";
import { MediaEpisodeInfoResponse } from "../../types/mediaEpisodeInfo.type";
import { getMediaByMalIdRepository } from "../../../media/repositories/GET/getMediaByMalId.repository";
import { AppError } from "../../../../helpers/error/instances/app";
import { SystemAccountId } from "../../../../config/account/system";
import { bulkInsertEpisodesRepository } from "../../repositories/bulkInsertEpisodes.repository";
export const bulkInsertEpisodeService = async (
mal_id: number,
page: number = 1,
) => {
try {
const episodeAPI = getEpisodeReferenceAPI(mal_id);
const episodeData: MediaEpisodeInfoResponse = await fetch(
`${episodeAPI.baseURL}${episodeAPI.getEpisodeList}?page=${page}`,
).then((res) => res.json());
const mediaData = await getMediaByMalIdRepository(mal_id);
if (!mediaData)
throw new AppError(
404,
`Media with Mal ID ${mal_id} not found in database`,
);
const insertedEpisodeData = [];
episodeData.data.forEach(async (episode) => {
insertedEpisodeData.push(
await bulkInsertEpisodesRepository({
mediaId: mediaData.id!,
episode: episode.mal_id,
name: episode.title,
score: episode.score,
uploadedBy: SystemAccountId,
}),
);
});
return episodeData;
} catch (err) {
ErrorForwarder(err);
}
};