update
All checks were successful
Deploy to Production / deploy (push) Successful in 21s

This commit is contained in:
silverpro89
2026-01-28 11:21:21 +07:00
parent 57c45d27a3
commit 3791b7cae1
23 changed files with 1033 additions and 317 deletions

View File

@@ -1,6 +1,6 @@
const { Grade, GradeItem, GradeSummary, StudentDetail, Subject, AcademicYear } = require('../models');
const { cacheUtils } = require('../config/redis');
const { addDatabaseWriteJob, addGradeCalculationJob } = require('../config/bullmq');
const { addGradeCalculationJob } = require('../config/bullmq');
/**
* Grade Controller - Quản lý điểm số
@@ -121,22 +121,21 @@ class GradeController {
}
/**
* Create new grade (async via BullMQ)
* Create new grade
*/
async createGrade(req, res, next) {
try {
const gradeData = req.body;
const job = await addDatabaseWriteJob('create', 'Grade', gradeData);
const grade = await Grade.create(gradeData);
await cacheUtils.deletePattern('grades:list:*');
await cacheUtils.deletePattern(`grade:student:${gradeData.student_id}:*`);
res.status(202).json({
res.status(201).json({
success: true,
message: 'Grade creation job queued',
jobId: job.id,
data: gradeData,
message: 'Grade created successfully',
data: grade,
});
} catch (error) {
next(error);
@@ -144,25 +143,31 @@ class GradeController {
}
/**
* Update grade (async via BullMQ)
* Update grade
*/
async updateGrade(req, res, next) {
try {
const { id } = req.params;
const updates = req.body;
const job = await addDatabaseWriteJob('update', 'Grade', {
id,
updates,
});
const grade = await Grade.findByPk(id);
if (!grade) {
return res.status(404).json({
success: false,
message: 'Grade not found',
});
}
await grade.update(updates);
await cacheUtils.delete(`grade:${id}`);
await cacheUtils.deletePattern('grades:list:*');
res.status(202).json({
res.status(200).json({
success: true,
message: 'Grade update job queued',
jobId: job.id,
message: 'Grade updated successfully',
data: grade,
});
} catch (error) {
next(error);
@@ -170,21 +175,29 @@ class GradeController {
}
/**
* Delete grade (async via BullMQ)
* Delete grade
*/
async deleteGrade(req, res, next) {
try {
const { id } = req.params;
const job = await addDatabaseWriteJob('delete', 'Grade', { id });
const grade = await Grade.findByPk(id);
if (!grade) {
return res.status(404).json({
success: false,
message: 'Grade not found',
});
}
await grade.destroy();
await cacheUtils.delete(`grade:${id}`);
await cacheUtils.deletePattern('grades:list:*');
res.status(202).json({
res.json({
success: true,
message: 'Grade deletion job queued',
jobId: job.id,
message: 'Grade deleted successfully',
});
} catch (error) {
next(error);