This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user