@defikitdotnet/education-module-ai
Version:
AI Education Module using Agent Framework
58 lines (57 loc) • 4.07 kB
JavaScript
"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;
}