/**
* @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;