Source: routes/eventRoutes.js

/**
 * @file Defines the API routes for event-related operations.
 * @module routes/eventRoutes
 * @requires express
 * @requires ../controllers/eventController
 * @requires ../middleware/authMiddleware
 */

const express = require("express");

/**
 * Express router for event-related endpoints.
 * @type {express.Router}
 * @const
 * @namespace eventRoutes
 */
const router = express.Router();

const {
  getEvents,
  getEventById,
  createEvent,
  updateEvent,
  deleteEvent,
} = require("../controllers/eventController");
const { protect, admin } = require("../middleware/authMiddleware");

/**
 * GET /api/events
 * @function
 * @memberof eventRoutes
 * @description Get all events.
 * @access Public
 */

/**
 * POST /api/events
 * @function
 * @memberof eventRoutes
 * @description Create a new event.
 * @access Private/Admin
 */
router.route("/").get(getEvents).post(protect, admin, createEvent);

/**
 * GET /api/events/:id
 * @function
 * @memberof eventRoutes
 * @param {string} id - Event ID
 * @description Get a single event by its ID.
 * @access Public
 */

/**
 * PUT /api/events/:id
 * @function
 * @memberof eventRoutes
 * @param {string} id - Event ID
 * @description Update an event by its ID.
 * @access Private/Admin
 */

/**
 * DELETE /api/events/:id
 * @function
 * @memberof eventRoutes
 * @param {string} id - Event ID
 * @description Delete an event by its ID.
 * @access Private/Admin
 */
router
  .route("/:id")
  .get(getEventById)
  .put(protect, admin, updateEvent)
  .delete(protect, admin, deleteEvent);

module.exports = router;