fix cleanup
This commit is contained in:
parent
96e4571b44
commit
9ca61e74ec
@ -4,8 +4,9 @@ const { authenticateToken, requireAdmin } = require('../middleware/auth');
|
||||
const Domain = require('../db/models/Domain');
|
||||
const User = require('../db/models/User');
|
||||
const TempEmail = require('../db/models/TempEmail');
|
||||
const Message = require('../db/models/Message');
|
||||
const MessageService = require('../email_server/services/MessageService');
|
||||
|
||||
const config = require('../config/haraka');
|
||||
router.use(authenticateToken, requireAdmin);
|
||||
|
||||
// Domain management
|
||||
@ -91,14 +92,48 @@ router.delete('/temp-emails/:id', async (req, res) => {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
const { transaction } = require('objection');
|
||||
|
||||
// Manual cleanup trigger
|
||||
router.post('/cleanup', async (req, res) => {
|
||||
try {
|
||||
const deletedCount = await MessageService.cleanup();
|
||||
res.json({ deletedCount });
|
||||
const cutoffDate = new Date();
|
||||
cutoffDate.setDate(cutoffDate.getDate() - 14); // Using 14 days directly from your specification
|
||||
|
||||
// Start a transaction to ensure data consistency
|
||||
const result = await transaction(TempEmail.knex(), async (trx) => {
|
||||
// First get the IDs of emails to be deleted
|
||||
const emailsToDelete = await TempEmail.query(trx)
|
||||
.select('id')
|
||||
.where('created_at', '<', cutoffDate);
|
||||
|
||||
const emailIds = emailsToDelete.map(email => email.id);
|
||||
|
||||
// Delete associated messages first (foreign key constraint)
|
||||
const deletedMessages = emailIds.length > 0
|
||||
? await Message.query(trx)
|
||||
.whereIn('temp_email_id', emailIds)
|
||||
.where('created_at', '<', cutoffDate)
|
||||
.delete()
|
||||
: 0;
|
||||
|
||||
// Then delete the temporary emails
|
||||
const deletedTempEmails = await TempEmail.query(trx)
|
||||
.where('created_at', '<', cutoffDate)
|
||||
.delete();
|
||||
|
||||
return {
|
||||
deletedMessages,
|
||||
deletedTempEmails
|
||||
};
|
||||
});
|
||||
|
||||
res.json(result);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
console.error('Cleanup error:', error);
|
||||
res.status(500).json({
|
||||
error: 'Failed to perform cleanup',
|
||||
details: error.message
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user