From 299255f35b51b35e499c4501d2d1620e9d3804c7 Mon Sep 17 00:00:00 2001
From: Salomo309 <109785084+Salomo309@users.noreply.github.com>
Date: Sat, 11 Nov 2023 16:24:00 +0700
Subject: [PATCH] feat: premium song cntrller

---
 src/controllers/premium-song-controller.ts | 72 ++++++++++++++++++++++
 1 file changed, 72 insertions(+)
 create mode 100644 src/controllers/premium-song-controller.ts

diff --git a/src/controllers/premium-song-controller.ts b/src/controllers/premium-song-controller.ts
new file mode 100644
index 0000000..14189f7
--- /dev/null
+++ b/src/controllers/premium-song-controller.ts
@@ -0,0 +1,72 @@
+import { NextFunction, Request, Response } from "express";
+import * as PremiumSongService from "../services/premium-song-services"
+import { generateResponse } from "../utils/response";
+import { StatusCodes } from "http-status-codes";
+
+const addNewSong = async (
+    req: Request,
+    res: Response,
+    next: NextFunction,
+): Promise<void> => {
+    try {
+        const data = req.body;
+        const premiumAlbumId = Number(req.params.premiumAlbumId);
+        const responseData = await PremiumSongService.addNewSong(data, premiumAlbumId);
+        generateResponse(res, StatusCodes.OK, responseData);
+    } catch (err) {
+        next(err);
+    }
+};
+
+const getAllSongFromAlbum = async (
+    req: Request,
+    res: Response,
+    next: NextFunction,
+): Promise<void> => {
+    try {
+        const premiumAlbumId = Number(req.params.premiumAlbumId);
+        const responseData = await PremiumSongService.getAllSongFromAlbum(premiumAlbumId);
+        generateResponse(res, StatusCodes.OK, responseData);
+    } catch (err) {
+        next(err);
+    }
+};
+
+const updatePremiumSong = async (
+    req: Request,
+    res: Response,
+    next: NextFunction,
+): Promise<void> => {
+    try {
+        const data = req.body;
+        const premiumAlbumId = Number(req.params.premiumAlbumId);
+        const premiumSongId = Number(req.params.premiumSongId);
+        const responseData = await PremiumSongService.updatePremiumSong(data, premiumAlbumId, premiumSongId);
+        generateResponse(res, StatusCodes.OK, responseData);
+    } catch (err) {
+        next(err);
+    }
+};
+
+const deletePremiumSong = async (
+    req: Request,
+    res: Response,
+    next: NextFunction,
+): Promise<void> => {
+    try {
+        const premiumAlbumId = Number(req.params.premiumAlbumId);
+        const premiumSongId = Number(req.params.premiumSongId);
+        const responseData = await PremiumSongService.deletePremiumSong(premiumAlbumId, premiumSongId);
+        generateResponse(res, StatusCodes.OK, responseData);
+    } catch (err) {
+        next(err);
+    }
+};
+
+
+export {
+    addNewSong,
+    getAllSongFromAlbum,
+    updatePremiumSong,
+    deletePremiumSong,
+};
-- 
GitLab