habits.andr33v.ru/server/api/admin/cleanup.post.ts

35 lines
1.1 KiB
TypeScript

import { cleanupAnonymousUsers } from '~/server/tasks/cleanup';
/**
* API endpoint to trigger the cleanup of old anonymous users.
* This endpoint is protected by a secret key passed in the 'x-cleanup-secret' header.
*/
export default defineEventHandler(async (event) => {
// Read the secret from the request header.
const secret = getRequestHeader(event, 'x-cleanup-secret');
// Ensure the secret is present and matches the one in environment variables.
if (!process.env.CLEANUP_SECRET || secret !== process.env.CLEANUP_SECRET) {
throw createError({
statusCode: 401,
statusMessage: 'Unauthorized. Invalid or missing cleanup secret.'
});
}
console.log('[API] Cleanup task triggered.');
try {
const result = await cleanupAnonymousUsers();
return {
success: true,
message: `Cleanup successful. Deleted ${result.count} anonymous users.`
};
} catch (error) {
console.error('[API] Error during cleanup task:', error);
throw createError({
statusCode: 500,
statusMessage: 'Internal Server Error. Failed to execute cleanup task.'
});
}
});