Hotfixes and CI/CD
Some checks failed
Build and Deploy / build-and-deploy (push) Failing after 3m51s
Some checks failed
Build and Deploy / build-and-deploy (push) Failing after 3m51s
This commit is contained in:
48
supabase/close_sessions_cron.sql
Normal file
48
supabase/close_sessions_cron.sql
Normal file
@@ -0,0 +1,48 @@
|
||||
-- ============================================================
|
||||
-- Time Tracker App - Automatic Session Closure at Midnight
|
||||
-- Run this SQL in your Supabase SQL Editor
|
||||
-- ============================================================
|
||||
|
||||
-- Check if pg_cron extension is available
|
||||
CREATE EXTENSION IF NOT EXISTS pg_cron;
|
||||
|
||||
-- Function to close active sessions at midnight
|
||||
-- This will only close sessions that are currently running (end_time IS NULL)
|
||||
-- and will preserve all session history
|
||||
CREATE OR REPLACE FUNCTION close_active_sessions_at_midnight()
|
||||
RETURNS void AS $$
|
||||
DECLARE
|
||||
closed_count INTEGER;
|
||||
BEGIN
|
||||
-- Update all active sessions (where end_time is NULL)
|
||||
-- Set end_time to today at 00:00:00 (midnight)
|
||||
-- This closes only currently active sessions, preserving all history
|
||||
UPDATE timers
|
||||
SET end_time = DATE_TRUNC('day', NOW()),
|
||||
duration_ms = EXTRACT(EPOCH FROM (DATE_TRUNC('day', NOW()) - start_time)) * 1000
|
||||
WHERE end_time IS NULL
|
||||
AND start_time < DATE_TRUNC('day', NOW());
|
||||
|
||||
-- Get the count of closed sessions for the notice
|
||||
GET DIAGNOSTICS closed_count = ROW_COUNT;
|
||||
|
||||
RAISE NOTICE 'Closed % active sessions at midnight (history preserved)', closed_count;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Schedule the function to run daily at midnight (00:00)
|
||||
-- This will run in the timezone of your Supabase project
|
||||
SELECT cron.schedule(
|
||||
'close-active-sessions-at-midnight', -- job name
|
||||
'0 0 * * *', -- cron expression (at 00:00 every day)
|
||||
$$SELECT close_active_sessions_at_midnight()$$
|
||||
);
|
||||
|
||||
-- To manually test the function, you can run:
|
||||
-- SELECT close_active_sessions_at_midnight();
|
||||
|
||||
-- To view all cron jobs:
|
||||
-- SELECT * FROM cron.job;
|
||||
|
||||
-- To unschedule this job:
|
||||
-- SELECT cron.unschedule('close-active-sessions-at-midnight');
|
||||
Reference in New Issue
Block a user