Implement vocab course and grammar exercise features in backend and frontend
- Added new course management functionalities in VocabController, including creating, updating, and deleting courses and lessons. - Implemented enrollment and progress tracking for courses, along with grammar exercise creation and management. - Updated database schema to include tables for courses, lessons, enrollments, and grammar exercises. - Enhanced frontend with new routes and views for course listing and details, including internationalization support for course-related texts. - Improved user experience by adding navigation to courses from the main vocab trainer view.
This commit is contained in:
@@ -22,6 +22,37 @@ router.get('/chapters/:chapterId', vocabController.getChapter);
|
||||
router.get('/chapters/:chapterId/vocabs', vocabController.listChapterVocabs);
|
||||
router.post('/chapters/:chapterId/vocabs', vocabController.addVocabToChapter);
|
||||
|
||||
// Courses
|
||||
router.post('/courses', vocabController.createCourse);
|
||||
router.get('/courses', vocabController.getCourses);
|
||||
router.get('/courses/my', vocabController.getMyCourses);
|
||||
router.get('/courses/:courseId', vocabController.getCourse);
|
||||
router.put('/courses/:courseId', vocabController.updateCourse);
|
||||
router.delete('/courses/:courseId', vocabController.deleteCourse);
|
||||
|
||||
// Lessons
|
||||
router.post('/courses/:courseId/lessons', vocabController.addLessonToCourse);
|
||||
router.put('/lessons/:lessonId', vocabController.updateLesson);
|
||||
router.delete('/lessons/:lessonId', vocabController.deleteLesson);
|
||||
|
||||
// Enrollment
|
||||
router.post('/courses/:courseId/enroll', vocabController.enrollInCourse);
|
||||
router.delete('/courses/:courseId/enroll', vocabController.unenrollFromCourse);
|
||||
|
||||
// Progress
|
||||
router.get('/courses/:courseId/progress', vocabController.getCourseProgress);
|
||||
router.put('/lessons/:lessonId/progress', vocabController.updateLessonProgress);
|
||||
|
||||
// Grammar Exercises
|
||||
router.get('/grammar/exercise-types', vocabController.getExerciseTypes);
|
||||
router.post('/lessons/:lessonId/grammar-exercises', vocabController.createGrammarExercise);
|
||||
router.get('/lessons/:lessonId/grammar-exercises', vocabController.getGrammarExercisesForLesson);
|
||||
router.get('/lessons/:lessonId/grammar-exercises/progress', vocabController.getGrammarExerciseProgress);
|
||||
router.get('/grammar-exercises/:exerciseId', vocabController.getGrammarExercise);
|
||||
router.post('/grammar-exercises/:exerciseId/check', vocabController.checkGrammarExerciseAnswer);
|
||||
router.put('/grammar-exercises/:exerciseId', vocabController.updateGrammarExercise);
|
||||
router.delete('/grammar-exercises/:exerciseId', vocabController.deleteGrammarExercise);
|
||||
|
||||
export default router;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user