♻️ refactor: move file to related folder

This commit is contained in:
Rafi Arrafif
2026-01-23 22:29:30 +07:00
parent 4c1f891f12
commit 7d26ca7f7b
8 changed files with 223 additions and 157 deletions

View File

@ -0,0 +1,57 @@
import { Prisma } from "@prisma/client";
import { getContentReferenceAPI } from "../../../config/apis/media.reference";
import { ErrorForwarder } from "../../../helpers/error/instances/forwarder";
import { bulkInsertGenresRepository } from "../repositories/bulkInsertGenres.repository";
import { InsertMediaRepository } from "../repositories/bulkinsertMediaa.repository";
import { bulkInsertStudiosRepository } from "../repositories/bulkInsertStudios.repository";
import { MediaFullInfoResponse } from "../types/mediaFullInfo.type";
import { generateSlug } from "../../../helpers/characters/generateSlug";
export const bulkInsertAnimeService = async (malId: number) => {
try {
const { baseURL, getMediaFullInfo } = getContentReferenceAPI(malId);
const mediaFullInfo = (await fetch(baseURL + getMediaFullInfo).then((res) =>
res.json(),
)) as MediaFullInfoResponse;
const insertedGenres = await bulkInsertGenresRepository(mediaFullInfo);
const insertedStudios = await bulkInsertStudiosRepository(mediaFullInfo);
const constructMediaPayload = {
title: mediaFullInfo.data.title,
titleAlternative: (mediaFullInfo.data
.titles as unknown) as Prisma.InputJsonValue,
slug: await generateSlug(mediaFullInfo.data.title, {
model: "media",
target: "slug",
}),
malId: mediaFullInfo.data.mal_id,
genres: {
connect: insertedGenres.map((id) => ({ id })),
},
studios: {
connect: insertedStudios.map((id) => ({ id })),
},
score: mediaFullInfo.data.score,
pictureMedium: mediaFullInfo.data.images.webp.image_url,
pictureLarge: mediaFullInfo.data.images.webp.large_image_url,
status: mediaFullInfo.data.status,
startAiring: mediaFullInfo.data.aired.from,
endAiring: mediaFullInfo.data.aired.to,
synopsis: mediaFullInfo.data.synopsis,
ageRating: mediaFullInfo.data.rating,
mediaType: mediaFullInfo.data.type,
source: mediaFullInfo.data.source,
onDraft: false,
uploadedBy: "b734b9bc-b4ea-408f-a80e-0a837ce884da",
};
const insertedMedia = await InsertMediaRepository({
malId: mediaFullInfo.data.mal_id,
payload: constructMediaPayload,
});
return insertedMedia;
} catch (error) {
ErrorForwarder(error);
}
};