UNPKG

@defikitdotnet/education-module-ai

Version:
58 lines (57 loc) 4.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createCourseRoutes = createCourseRoutes; var express_1 = require("express"); var CourseController_1 = require("../controllers/CourseController"); var CourseService_1 = require("../services/CourseService"); var TeacherService_1 = require("../services/TeacherService"); var auth_1 = require("../middleware/auth"); var CourseRepository_1 = require("../repositories/CourseRepository"); var SectionRepository_1 = require("../repositories/SectionRepository"); var LectureRepository_1 = require("../repositories/LectureRepository"); var QuizRepository_1 = require("../repositories/QuizRepository"); var QuizQuestionRepository_1 = require("../repositories/QuizQuestionRepository"); var CategoryRepository_1 = require("../repositories/CategoryRepository"); var EnrollmentRepository_1 = require("../repositories/EnrollmentRepository"); var SectionService_1 = require("../services/SectionService"); var LectureService_1 = require("../services/LectureService"); var QuizService_1 = require("../services/QuizService"); var QuizQuestionService_1 = require("../services/QuizQuestionService"); var TeacherRepository_1 = require("../repositories/TeacherRepository"); /** * Create and configure course routes */ function createCourseRoutes(dbAdapter) { var router = (0, express_1.Router)(); // Create repositories var courseRepository = new CourseRepository_1.CourseRepository(dbAdapter); var sectionRepository = new SectionRepository_1.SectionRepository(dbAdapter); var lectureRepository = new LectureRepository_1.LectureRepository(dbAdapter); var quizRepository = new QuizRepository_1.QuizRepository(dbAdapter); var quizQuestionRepository = new QuizQuestionRepository_1.QuizQuestionRepository(dbAdapter); var categoryRepository = new CategoryRepository_1.CategoryRepository(dbAdapter); var enrollmentRepository = new EnrollmentRepository_1.EnrollmentRepository(dbAdapter); var teacherRepository = new TeacherRepository_1.TeacherRepository(dbAdapter); // Create services var sectionService = new SectionService_1.SectionService(sectionRepository); var lectureService = new LectureService_1.LectureService(lectureRepository); var quizService = new QuizService_1.QuizService(quizRepository); var quizQuestionService = new QuizQuestionService_1.QuizQuestionService(quizQuestionRepository); var teacherService = new TeacherService_1.TeacherService(teacherRepository); var courseService = new CourseService_1.CourseService(courseRepository, sectionRepository, lectureRepository, quizRepository, quizQuestionRepository, categoryRepository, enrollmentRepository, dbAdapter); // Create controller with all required dependencies var courseController = new CourseController_1.CourseController(courseRepository, sectionRepository, lectureRepository, quizRepository, quizQuestionRepository, courseService, sectionService, lectureService, quizService, quizQuestionService, teacherService); // Public routes router.get("/public", courseController.getPublicCourses.bind(courseController)); router.get("/:courseId", courseController.getCourseDetail.bind(courseController)); router.get("/category/:categoryId", courseController.getCoursesByCategory.bind(courseController)); // Teacher-only routes (protected by authentication) router.post("/", auth_1.authenticateTeacher, courseController.createCourse.bind(courseController)); router.put("/:courseId", auth_1.authenticateTeacher, courseController.updateCourse.bind(courseController)); router.delete("/:courseId", auth_1.authenticateTeacher, courseController.deleteCourse.bind(courseController)); // Route to get courses by teacher ID (protected) router.get("/teacher/:teacherId", auth_1.authenticateTeacher, courseController.getCoursesByTeacherId.bind(courseController)); // AI course generation route (protected) router.post("/generate", auth_1.authenticateTeacher, courseController.generateCourse.bind(courseController)); return router; }