Update backend 2
All checks were successful
Deploy to Production / deploy (push) Successful in 19s

This commit is contained in:
silverpro89
2026-02-25 20:05:00 +07:00
parent 085f36078a
commit 47ab75f264
4 changed files with 47 additions and 6 deletions

View File

@@ -11,7 +11,7 @@ class ContextController {
*/
async createContext(req, res, next) {
try {
const { title, desc, grade, type } = req.body;
const { title, desc, grade, type, type_image , reference_id } = req.body;
// Validate required fields
if (!title || !desc || !grade) {
@@ -35,9 +35,11 @@ class ContextController {
desc,
grade: gradeNum,
type: type || 'general',
type_image: type_image || null,
status: 0, // Draft
context: '',
knowledge: ''
knowledge: '',
reference_id: reference_id || null
});
res.status(201).json({

View File

@@ -17,6 +17,8 @@ class LessonController {
is_published,
is_free,
lesson_type,
lesson_content_type,
chapter_id,
search
} = req.query;
@@ -24,6 +26,9 @@ class LessonController {
const where = {};
// Filters
if (chapter_id) {
where.chapter_id = chapter_id;
}
if (is_published !== undefined) {
where.is_published = is_published === 'true';
}
@@ -33,6 +38,9 @@ class LessonController {
if (lesson_type) {
where.lesson_type = lesson_type;
}
if (lesson_content_type) {
where.lesson_content_type = lesson_content_type;
}
if (search) {
where.lesson_title = { [Op.like]: `%${search}%` };
}

View File

@@ -19,6 +19,11 @@ const Story = sequelize.define('stories', {
allowNull: false,
comment: 'Story title/name'
},
thumbnail: {
type: DataTypes.TEXT,
allowNull: true,
comment: 'URL to story thumbnail image'
},
logo: {
type: DataTypes.TEXT,
allowNull: true,

View File

@@ -51,6 +51,32 @@ const { authenticateToken } = require('../middleware/auth');
*/
router.get('/', lessonController.getAllLessons);
/**
* @swagger
* /api/lessons/chapter/{chapter_id}:
* get:
* tags: [Lessons]
* summary: Lấy tất cả bài học trong một chapter
* parameters:
* - in: path
* name: chapter_id
* required: true
* schema:
* type: string
* format: uuid
* description: UUID của chapter
* - in: query
* name: include_unpublished
* schema:
* type: boolean
* default: false
* description: Bao gồm cả bài chưa publish
* responses:
* 200:
* description: Danh sách bài học trong chapter
*/
router.get('/chapter/:chapter_id', lessonController.getLessonsByChapter);
/**
* @swagger
* /api/lessons/{id}:
@@ -138,7 +164,7 @@ router.get('/:id/games', lessonController.getMatchingGames);
* 201:
* description: Tạo bài học thành công
*/
router.post('/', authenticateToken, lessonController.createLesson);
router.post('/', lessonController.createLesson);
/**
* @swagger
@@ -165,7 +191,7 @@ router.post('/', authenticateToken, lessonController.createLesson);
* 200:
* description: Cập nhật thành công
*/
router.put('/:id', authenticateToken, lessonController.updateLesson);
router.put('/:id', lessonController.updateLesson);
/**
* @swagger
@@ -186,7 +212,7 @@ router.put('/:id', authenticateToken, lessonController.updateLesson);
* 200:
* description: Xóa thành công
*/
router.delete('/:id', authenticateToken, lessonController.deleteLesson);
router.delete('/:id', lessonController.deleteLesson);
/**
* @swagger
@@ -219,6 +245,6 @@ router.delete('/:id', authenticateToken, lessonController.deleteLesson);
* 200:
* description: Hoàn thành bài học
*/
router.post('/:id/complete', authenticateToken, lessonController.completeLesson);
router.post('/:id/complete', lessonController.completeLesson);
module.exports = router;