From 46d7dc8da88adb72d165804f756025dd0c0745c4 Mon Sep 17 00:00:00 2001 From: Rafi Arrafif Date: Sat, 21 Feb 2026 20:46:25 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20add=20service=20to=20fetch?= =?UTF-8?q?=20all=20videos=20from=20videoService?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../updateAllEpisodeThumbnail.controller.ts | 3 +- .../http/updateAllEpisodeThumbnail.service.ts | 13 ++++++- src/modules/videoService/model.ts | 3 ++ ...etAllVideoServiceWithEpisode.repository.ts | 39 +++++++++++++++++++ 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 src/modules/videoService/model.ts create mode 100644 src/modules/videoService/repositories/GET/getAllVideoServiceWithEpisode.repository.ts diff --git a/src/modules/internal/controllers/updateAllEpisodeThumbnail.controller.ts b/src/modules/internal/controllers/updateAllEpisodeThumbnail.controller.ts index c83279e..e347587 100644 --- a/src/modules/internal/controllers/updateAllEpisodeThumbnail.controller.ts +++ b/src/modules/internal/controllers/updateAllEpisodeThumbnail.controller.ts @@ -48,7 +48,8 @@ export const updateAllEpisodeThumbnailController = async ( return returnWriteResponse( ctx.set, 204, - `Updating ${newEpisodeThumbnailsCount} episode thumbnails successfully.`, + `Updating episode thumbnails successfully.`, + newEpisodeThumbnailsCount, ); } catch (error) { return mainErrorHandler(ctx.set, error); diff --git a/src/modules/internal/services/http/updateAllEpisodeThumbnail.service.ts b/src/modules/internal/services/http/updateAllEpisodeThumbnail.service.ts index 1370003..2478c29 100644 --- a/src/modules/internal/services/http/updateAllEpisodeThumbnail.service.ts +++ b/src/modules/internal/services/http/updateAllEpisodeThumbnail.service.ts @@ -1,5 +1,6 @@ import { AppError } from "../../../../helpers/error/instances/app"; import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder"; +import { getAllVideoServiceWithEpisodeRepository } from "../../../videoService/repositories/GET/getAllVideoServiceWithEpisode.repository"; export const updateAllEpisodeThumbnailService = async ( serviceReferenceId?: string, @@ -8,7 +9,17 @@ export const updateAllEpisodeThumbnailService = async ( if (!serviceReferenceId) throw new AppError(400, "Service Reference ID is required."); - return serviceReferenceId; + const videosData = await getAllVideoServiceWithEpisodeRepository( + serviceReferenceId, + ); + + if (!videosData || videosData.length === 0) + throw new AppError( + 404, + "No episode with no thumbnail found in the specified video service.", + ); + + return videosData; } catch (error) { ErrorForwarder(error); } diff --git a/src/modules/videoService/model.ts b/src/modules/videoService/model.ts new file mode 100644 index 0000000..112f3bd --- /dev/null +++ b/src/modules/videoService/model.ts @@ -0,0 +1,3 @@ +import { prisma } from "../../utils/databases/prisma/connection"; + +export const videoServiceModel = prisma.videoService; diff --git a/src/modules/videoService/repositories/GET/getAllVideoServiceWithEpisode.repository.ts b/src/modules/videoService/repositories/GET/getAllVideoServiceWithEpisode.repository.ts new file mode 100644 index 0000000..a6ad516 --- /dev/null +++ b/src/modules/videoService/repositories/GET/getAllVideoServiceWithEpisode.repository.ts @@ -0,0 +1,39 @@ +import { AppError } from "../../../../helpers/error/instances/app"; +import { videoServiceModel } from "../../model"; + +export const getAllVideoServiceWithEpisodeRepository = async ( + videoServiceId: string, +) => { + try { + return await videoServiceModel.findMany({ + where: { + id: videoServiceId, + videos: { + some: { + episode: { + pictureThumbnail: null, + }, + }, + }, + }, + select: { + endpointThumbnail: true, + videos: { + select: { + thumbnailCode: true, + episode: { + select: { + id: true, + }, + }, + }, + }, + }, + }); + } catch (error) { + throw new AppError( + 500, + "An error occurred while fetching video services with episodes.", + ); + } +};