You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.4 KiB
76 lines
2.4 KiB
import {Router} from "express";
|
|
import {create, del, getAll, getById, getStats, toggleSubscription, update} from "../controllers/channel.controller.js";
|
|
import {isTokenValid} from "../middlewares/jwt.middleware.js";
|
|
import {
|
|
Channel,
|
|
ChannelCreate,
|
|
doChannelExists,
|
|
doChannelNameExists,
|
|
doUserHaveChannel, isOwner
|
|
} from "../middlewares/channel.middleware.js";
|
|
import validator from "../middlewares/error.middleware.js";
|
|
import {doUserExistsBody, isOwnerBody} from "../middlewares/user.middleware.js";
|
|
import {addLogger} from "../middlewares/logger.middleware.js";
|
|
|
|
const router = Router();
|
|
|
|
/**
|
|
* @swagger
|
|
* tags:
|
|
* name: Channels
|
|
* description: API for managing channels
|
|
* /:
|
|
* post:
|
|
* summary: Create a new channel
|
|
* requestBody:
|
|
* required: true
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* name:
|
|
* type: string
|
|
* description:
|
|
* type: string
|
|
* owner:
|
|
* type: string
|
|
* responses:
|
|
* 201:
|
|
* description: Channel created successfully
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* id:
|
|
* type: string
|
|
* name:
|
|
* type: string
|
|
* description:
|
|
* type: string
|
|
* owner:
|
|
* type: string
|
|
*/
|
|
router.post("/", [addLogger, isTokenValid, ChannelCreate.name, ChannelCreate.description, ChannelCreate.owner, validator, doUserExistsBody, doUserHaveChannel, isOwnerBody, doChannelNameExists], create);
|
|
|
|
// GET CHANNEL BY ID
|
|
router.get("/:id", [addLogger, Channel.id, validator, doChannelExists], getById);
|
|
|
|
// GET ALL CHANNEL
|
|
router.get("/", [addLogger, isTokenValid], getAll);
|
|
|
|
// UPDATE CHANNEl
|
|
router.put("/:id", [addLogger, isTokenValid, Channel.id, ChannelCreate.name, ChannelCreate.description, validator, doChannelExists, isOwner], update);
|
|
|
|
// DELETE CHANNEL
|
|
router.delete("/:id", [addLogger, isTokenValid, Channel.id, validator, doChannelExists, isOwner], del);
|
|
|
|
// TOGGLE SUBSCRIPTION
|
|
router.post("/:id/subscribe", [addLogger, isTokenValid, Channel.id, validator, doChannelExists], toggleSubscription);
|
|
|
|
// GET TOTAL VIEWS AND SUBSCRIBERS OF THE CHANNEL
|
|
router.get("/:id/stats", [addLogger, isTokenValid, Channel.id, validator, doChannelExists, isOwner], getStats);
|
|
|
|
|
|
export default router;
|