mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
Adjusted
This commit is contained in:
+129
-24
@@ -1,30 +1,135 @@
|
||||
const router = require("express").Router();
|
||||
const controller = require("../../controllers/admin/courses.controller");
|
||||
const { sensitiveOpsLimiter } = require("../../middleware/rateLimiter.middleware");
|
||||
const ctrl = require("../../controllers/admin/courses.controller");
|
||||
|
||||
// ─── Courses ──────────────────────────────────────────────────────────────────
|
||||
router.get("/", controller.getCourses);
|
||||
router.post("/", sensitiveOpsLimiter, controller.createCourse);
|
||||
router.get("/:courseId", controller.getCourse);
|
||||
router.patch("/:courseId", sensitiveOpsLimiter, controller.updateCourse);
|
||||
router.delete("/:courseId", sensitiveOpsLimiter, controller.deleteCourse);
|
||||
const { authenticate } = require("../../middleware/auth.middleware");
|
||||
const { requireAdmin } = require("../../middleware/rbac.middleware");
|
||||
const { adminLimiter } = require("../../middleware/rateLimiter.middleware");
|
||||
|
||||
// ─── Units ────────────────────────────────────────────────────────────────────
|
||||
router.get("/:courseId/units", controller.getUnits);
|
||||
router.post("/:courseId/units", sensitiveOpsLimiter, controller.createUnit);
|
||||
router.get("/:courseId/units/:unitId", controller.getUnit);
|
||||
router.patch("/:courseId/units/:unitId", sensitiveOpsLimiter, controller.updateUnit);
|
||||
router.delete("/:courseId/units/:unitId", sensitiveOpsLimiter, controller.deleteUnit);
|
||||
router.use(authenticate, requireAdmin(), adminLimiter);
|
||||
|
||||
// ─── Lessons ──────────────────────────────────────────────────────────────────
|
||||
router.get("/:courseId/units/:unitId/lessons", controller.getLessons);
|
||||
router.post("/:courseId/units/:unitId/lessons", sensitiveOpsLimiter, controller.createLesson);
|
||||
router.get("/:courseId/units/:unitId/lessons/:lessonId", controller.getLesson);
|
||||
router.patch("/:courseId/units/:unitId/lessons/:lessonId", sensitiveOpsLimiter, controller.updateLesson);
|
||||
router.delete("/:courseId/units/:unitId/lessons/:lessonId", sensitiveOpsLimiter, controller.deleteLesson);
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
// COURSES
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
// ─── Lesson Page ──────────────────────────────────────────────────────────────
|
||||
router.get("/:courseId/units/:unitId/lessons/:lessonId/page", controller.getLessonPage);
|
||||
router.put("/:courseId/units/:unitId/lessons/:lessonId/page", sensitiveOpsLimiter, controller.upsertLessonPage);
|
||||
router.get("/", ctrl.getCourses);
|
||||
router.post("/", ctrl.createCourse);
|
||||
|
||||
module.exports = router;
|
||||
// ── static segments first ────────────────────────────────────────────────────
|
||||
router.get("/field-values", ctrl.getCourseFieldValues);
|
||||
router.delete("/bulk", ctrl.bulkArchiveCourses);
|
||||
router.get("/archives", ctrl.getArchivedCourses);
|
||||
router.patch("/restore/bulk", ctrl.bulkRestoreCourses);
|
||||
|
||||
// ── then :courseId ────────────────────────────────────────────────────────────
|
||||
router.get("/archives/:courseId", ctrl.getArchivedCourse);
|
||||
router.patch("/:courseId/restore", ctrl.restoreCourse);
|
||||
router.get("/:courseId", ctrl.getCourse);
|
||||
router.put("/:courseId", ctrl.updateCourse);
|
||||
router.delete("/:courseId", ctrl.archiveCourse);
|
||||
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
// PREREQUISITES
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
router.get("/:courseId/prerequisites", ctrl.getPrerequisites);
|
||||
router.put("/:courseId/prerequisites", ctrl.syncPrerequisites);
|
||||
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
// COURSE ASSESSMENT
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
router.get("/:courseId/assessment", ctrl.getAssessment);
|
||||
router.post("/:courseId/assessment", ctrl.createAssessment);
|
||||
|
||||
// ── static segments first ────────────────────────────────────────────────────
|
||||
router.get("/:courseId/assessment/archives", ctrl.getArchivedAssessment);
|
||||
|
||||
// ── then :assessmentId ────────────────────────────────────────────────────────
|
||||
router.put("/:courseId/assessment/:assessmentId", ctrl.updateAssessment);
|
||||
router.delete("/:courseId/assessment/:assessmentId", ctrl.deleteAssessment);
|
||||
router.patch("/:courseId/assessment/:assessmentId/restore", ctrl.restoreAssessment);
|
||||
|
||||
// ── Assessment Questions ──────────────────────────────────────────────────────
|
||||
router.get("/:courseId/assessment/:assessmentId/questions", ctrl.getQuestions);
|
||||
router.post("/:courseId/assessment/:assessmentId/questions", ctrl.createQuestion);
|
||||
|
||||
// static before :questionId
|
||||
router.delete("/:courseId/assessment/:assessmentId/questions/bulk", ctrl.bulkArchiveQuestions);
|
||||
router.patch("/:courseId/assessment/:assessmentId/questions/restore/bulk", ctrl.bulkRestoreQuestions);
|
||||
router.get("/:courseId/assessment/:assessmentId/questions/archives/:questionId", ctrl.getArchivedQuestion);
|
||||
|
||||
router.put("/:courseId/assessment/:assessmentId/questions/:questionId", ctrl.updateQuestion);
|
||||
router.delete("/:courseId/assessment/:assessmentId/questions/:questionId", ctrl.deleteQuestion);
|
||||
router.patch("/:courseId/assessment/:assessmentId/questions/:questionId/restore", ctrl.restoreQuestion);
|
||||
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
// UNITS
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
router.get("/:courseId/units", ctrl.getUnits);
|
||||
router.post("/:courseId/units", ctrl.createUnit);
|
||||
|
||||
// static before :unitId
|
||||
router.delete("/:courseId/units/bulk", ctrl.bulkArchiveUnits);
|
||||
router.get("/:courseId/units/archives", ctrl.getArchivedUnits);
|
||||
router.patch("/:courseId/units/restore/bulk", ctrl.bulkRestoreUnits);
|
||||
|
||||
router.get("/:courseId/units/archives/:unitId", ctrl.getArchivedUnit);
|
||||
router.patch("/:courseId/units/:unitId/restore", ctrl.restoreUnit);
|
||||
router.get("/:courseId/units/:unitId", ctrl.getUnit);
|
||||
router.put("/:courseId/units/:unitId", ctrl.updateUnit);
|
||||
router.delete("/:courseId/units/:unitId", ctrl.deleteUnit);
|
||||
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
// UNIT QUIZ
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
router.get("/:courseId/units/:unitId/quiz", ctrl.getQuiz);
|
||||
router.post("/:courseId/units/:unitId/quiz", ctrl.createQuiz);
|
||||
|
||||
// static before :quizId
|
||||
router.get("/:courseId/units/:unitId/quiz/archives", ctrl.getArchivedQuiz);
|
||||
|
||||
router.put("/:courseId/units/:unitId/quiz/:quizId", ctrl.updateQuiz);
|
||||
router.delete("/:courseId/units/:unitId/quiz/:quizId", ctrl.deleteQuiz);
|
||||
router.patch("/:courseId/units/:unitId/quiz/:quizId/restore", ctrl.restoreQuiz);
|
||||
|
||||
// ── Quiz Questions ────────────────────────────────────────────────────────────
|
||||
router.get("/:courseId/units/:unitId/quiz/:quizId/questions", ctrl.getQuestions);
|
||||
router.post("/:courseId/units/:unitId/quiz/:quizId/questions", ctrl.createQuestion);
|
||||
|
||||
// static before :questionId
|
||||
router.delete("/:courseId/units/:unitId/quiz/:quizId/questions/bulk", ctrl.bulkArchiveQuestions);
|
||||
router.patch("/:courseId/units/:unitId/quiz/:quizId/questions/restore/bulk", ctrl.bulkRestoreQuestions);
|
||||
router.get("/:courseId/units/:unitId/quiz/:quizId/questions/archives/:questionId", ctrl.getArchivedQuestion);
|
||||
|
||||
router.put("/:courseId/units/:unitId/quiz/:quizId/questions/:questionId", ctrl.updateQuestion);
|
||||
router.delete("/:courseId/units/:unitId/quiz/:quizId/questions/:questionId", ctrl.deleteQuestion);
|
||||
router.patch("/:courseId/units/:unitId/quiz/:quizId/questions/:questionId/restore", ctrl.restoreQuestion);
|
||||
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
// LESSONS
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
router.get("/:courseId/units/:unitId/lessons", ctrl.getLessons);
|
||||
router.post("/:courseId/units/:unitId/lessons", ctrl.createLesson);
|
||||
|
||||
// static before :lessonId
|
||||
router.delete("/:courseId/units/:unitId/lessons/bulk", ctrl.bulkArchiveLessons);
|
||||
router.get("/:courseId/units/:unitId/lessons/archives", ctrl.getArchivedLessons);
|
||||
router.patch("/:courseId/units/:unitId/lessons/restore/bulk", ctrl.bulkRestoreLessons);
|
||||
|
||||
router.get("/:courseId/units/:unitId/lessons/archives/:lessonId", ctrl.getArchivedLesson);
|
||||
router.patch("/:courseId/units/:unitId/lessons/:lessonId/restore", ctrl.restoreLesson);
|
||||
router.get("/:courseId/units/:unitId/lessons/:lessonId", ctrl.getLesson);
|
||||
router.put("/:courseId/units/:unitId/lessons/:lessonId", ctrl.updateLesson);
|
||||
router.delete("/:courseId/units/:unitId/lessons/:lessonId", ctrl.deleteLesson);
|
||||
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
// LESSON PAGE
|
||||
// ══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
router.get("/:courseId/units/:unitId/lessons/:lessonId/page", ctrl.getLessonPage);
|
||||
router.put("/:courseId/units/:unitId/lessons/:lessonId/page", ctrl.upsertLessonPage);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user