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