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,7 +1,6 @@
const { Class } = require('../models');
const { StudentDetail, UserProfile, UsersAuth, School } = require('../models');
const { cacheUtils } = require('../config/redis');
const { addDatabaseWriteJob } = require('../config/bullmq');
/**
* Class Controller - Quản lý thông tin lớp học
@@ -107,22 +106,55 @@ class ClassController {
}
/**
* Create new class (async via BullMQ)
* Create new class
*/
async createClass(req, res, next) {
try {
const classData = req.body;
// Add to job queue for async processing
const job = await addDatabaseWriteJob('create', 'Class', classData);
// Create class directly
const newClass = await Class.create(classData);
// Invalidate related caches
await cacheUtils.deletePattern('classes:list:*');
res.status(202).json({
res.status(201).json({
success: true,
message: 'Class creation job queued',
jobId: job.id,
message: 'Class created successfully',
data: newClass,
});
} catch (error) {
next(error);
}
}
/**
* Update class
*/
async updateClass(req, res, next) {
try {
const { id } = req.params;
const updates = req.body;
const classData = await Class.findByPk(id);
if (!classData) {
return res.status(404).json({
success: false,
message: 'Class not found',
});
}
// Update class directly
await classData.update(updates);
// Invalidate related caches
await cacheUtils.delete(`class:${id}`);
await cacheUtils.deletePattern('classes:list:*');
res.json({
success: true,
message: 'Class updated successfully',
data: classData,
});
} catch (error) {
@@ -131,51 +163,31 @@ class ClassController {
}
/**
* Update class (async via BullMQ)
*/
async updateClass(req, res, next) {
try {
const { id } = req.params;
const updates = req.body;
// Add to job queue for async processing
const job = await addDatabaseWriteJob('update', 'Class', {
id,
updates,
});
// Invalidate related caches
await cacheUtils.delete(`class:${id}`);
await cacheUtils.deletePattern('classes:list:*');
res.status(202).json({
success: true,
message: 'Class update job queued',
jobId: job.id,
});
} catch (error) {
next(error);
}
}
/**
* Delete class (async via BullMQ)
* Delete class
*/
async deleteClass(req, res, next) {
try {
const { id } = req.params;
// Add to job queue for async processing
const job = await addDatabaseWriteJob('delete', 'Class', { id });
const classData = await Class.findByPk(id);
if (!classData) {
return res.status(404).json({
success: false,
message: 'Class not found',
});
}
// Delete class directly
await classData.destroy();
// Invalidate related caches
await cacheUtils.delete(`class:${id}`);
await cacheUtils.deletePattern('classes:list:*');
res.status(202).json({
res.json({
success: true,
message: 'Class deletion job queued',
jobId: job.id,
message: 'Class deleted successfully',
});
} catch (error) {
next(error);