diff --git a/src/modules/episode/controllers/getAllEpisodeFromSpecificMedia.controller.ts b/src/modules/episode/controllers/getAllEpisodeFromSpecificMedia.controller.ts index 6388a85..443a99b 100644 --- a/src/modules/episode/controllers/getAllEpisodeFromSpecificMedia.controller.ts +++ b/src/modules/episode/controllers/getAllEpisodeFromSpecificMedia.controller.ts @@ -3,6 +3,38 @@ import { mainErrorHandler } from "../../../helpers/error/handler"; import { returnReadResponse } from "../../../helpers/callback/httpResponse"; import { getAllEpisodeFromSpecificMediaService } from "../services/http/getAllEpisodeFromSpecificMedia.service"; +/** + * @function getAllEpisodeFromSpecificMediaController + * @description Controller to handle fetching all episodes associated with a specific media slug. + * + * @param {Context & { params: { mediaSlug: string } }} ctx + * The context object containing the request body. + * The params must include: + * - mediaSlug: string - The slug of the media to which the episode belongs. + * + * @example + * Request route: GET /episodes/:mediaSlug + * + * @returns {Promise} + * A response object indicating success or failure. + * Return example: + * { + * success: true, + * status: 200, + * message: "Episodes fetched successfully.", + * data: { ...episodeDetails } // Data returned only if the env run on development mode + * } + * + * @throws {Object} + * An error response object if validation fails or an error occurs during bulk insert operation. + * Return example: + * { + * success: false, + * status: , + * message: "", + * error: { ...errorDetails } // Additional error details if available and the env run on development mode + * } + */ export const getAllEpisodeFromSpecificMediaController = async ( ctx: Context & { params: { mediaSlug: string } }, ) => { diff --git a/src/modules/episode/controllers/getEpisodeDetails.controller.ts b/src/modules/episode/controllers/getEpisodeDetails.controller.ts index a1f83f1..35982cd 100644 --- a/src/modules/episode/controllers/getEpisodeDetails.controller.ts +++ b/src/modules/episode/controllers/getEpisodeDetails.controller.ts @@ -8,6 +8,39 @@ export interface GetEpisodeDetailsParams { episode?: string; } +/** + * @function getEpisodeDetailsController + * @description Controller to handle fetching episode details based on provided parameters. + * + * @param {Context & { params: GetEpisodeDetailsParams }} ctx + * The context object containing the request body. + * The params must include: + * - mediaSlug?: string - The slug of the media to which the episode belongs. + * - episode?: string - The identifier of the episode. + * + * @example + * Request route: GET /episodes/:mediaSlug/:episode + * + * @returns {Promise} + * A response object indicating success or failure. + * Return example: + * { + * success: true, + * status: 200, + * message: "Episode details fetched successfully.", + * data: { ...episodeDetails } // Data returned only if the env run on development mode + * } + * + * @throws {Object} + * An error response object if validation fails or an error occurs during bulk insert operation. + * Return example: + * { + * success: false, + * status: , + * message: "", + * error: { ...errorDetails } // Additional error details if available and the env run on development mode + * } + */ export const getEpisodeDetailsController = async ( ctx: Context & { params: GetEpisodeDetailsParams }, ) => { diff --git a/src/modules/internal/controllers/updateAllEpisodeThumbnail.controller.ts b/src/modules/internal/controllers/updateAllEpisodeThumbnail.controller.ts index 0e58fed..5a89369 100644 --- a/src/modules/internal/controllers/updateAllEpisodeThumbnail.controller.ts +++ b/src/modules/internal/controllers/updateAllEpisodeThumbnail.controller.ts @@ -3,6 +3,41 @@ import { mainErrorHandler } from "../../../helpers/error/handler"; import { returnWriteResponse } from "../../../helpers/callback/httpResponse"; import { updateAllEpisodeThumbnailService } from "../services/http/updateAllEpisodeThumbnail.service"; +/** + * @function updateAllEpisodeThumbnailController + * @description Controller to handle the bulk updating of episode thumbnails for all episodes associated with a specific service reference ID. + * + * @param {Context & { body: { service_reference_id: string } }} ctx + * The context object containing the request body. + * The body must include: + * - service_reference_id: string - The ID of the service to which the episodes belong. + * + * @example + * Request route: PUT /internal/episode/update-thumbnails + * Request body: + * { + * "service_reference_id": "019c0df6-f8fe-7565-82cd-9c29b20232ab" + * }, + * + * @returns {Promise} + * A response object indicating success or failure. + * Return example: + * { + * success: true, + * status: 204, + * message: "Updating {newEpisodeThumbnailsCount} episode thumbnails successfully.", + * } + * + * @throws {Object} + * An error response object if validation fails or an error occurs during bulk insert operation. + * Return example: + * { + * success: false, + * status: , + * message: "", + * error: { ...errorDetails } // Additional error details if available and the env run on development mode + * } + */ export const updateAllEpisodeThumbnailController = async ( ctx: Context & { body: { service_reference_id: string } }, ) => { diff --git a/src/modules/internal/index.ts b/src/modules/internal/index.ts index f80574b..683667b 100644 --- a/src/modules/internal/index.ts +++ b/src/modules/internal/index.ts @@ -8,6 +8,6 @@ import { updateAllEpisodeThumbnailController } from "./controllers/updateAllEpis export const internalModule = new Elysia({ prefix: "/internal" }) .post("/media/bulk-insert", bulkInsertMediaController) .post("/episode/bulk-insert", bulkInsertEpisodeController) - .post("/episode/update-thumbnails", updateAllEpisodeThumbnailController) + .put("/episode/update-thumbnails", updateAllEpisodeThumbnailController) .post("/video/bulk-insert", bulkInsertVideoController) .post("/video-service", createVideoServiceInternalController);