From 5d8a432de073626e84089086fca52a82ec2ed113 Mon Sep 17 00:00:00 2001 From: Bas van den Aakster Date: Fri, 7 Nov 2025 23:00:58 +0100 Subject: [PATCH] Add scheduled handler for cron-based session cleanup - Implements scheduled() function to handle cron triggers - Cleans up expired sessions every 5 minutes - Fixes 'Handler does not export a scheduled() function' error - Deletes sessions where expires_at < current timestamp --- src/worker.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/worker.ts b/src/worker.ts index 1006120..f143237 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -36,4 +36,25 @@ export default { // Handle request return app.fetch(request, env, ctx); }, + + /** + * Scheduled handler for cron triggers + * Runs every 5 minutes to clean up expired sessions + */ + async scheduled(event: ScheduledEvent, env: Env, ctx: ExecutionContext): Promise { + const storage = new D1Storage(env.DB); + const now = Date.now(); + + try { + // Delete expired sessions + await storage.db + .prepare('DELETE FROM sessions WHERE expires_at < ?') + .bind(now) + .run(); + + console.log(`Cleaned up expired sessions at ${new Date(now).toISOString()}`); + } catch (error) { + console.error('Error cleaning up sessions:', error); + } + }, };