fix(update_days_read.sql): corrects reading streak function

This commit is contained in:
Cory Dransfeldt 2025-05-16 09:04:22 -07:00
parent 61af1e0f23
commit 81e738621c
No known key found for this signature in database
3 changed files with 9 additions and 9 deletions

View file

@ -1,20 +1,20 @@
CREATE OR REPLACE FUNCTION update_days_read()
RETURNS TRIGGER AS $$
DECLARE
pacific_now TIMESTAMPTZ;
pacific_today DATE;
last_read DATE;
BEGIN
SELECT (NOW() AT TIME ZONE 'America/Los_Angeles')::DATE INTO pacific_today;
SELECT COALESCE(last_read_date::DATE, pacific_today - INTERVAL '1 day') INTO last_read FROM reading_streak LIMIT 1;
SELECT COALESCE(last_read_date::DATE, pacific_today - INTERVAL '1 day') INTO last_read
FROM reading_streak
LIMIT 1;
IF last_read < pacific_today - INTERVAL '1 day' THEN
UPDATE reading_streak
SET days_read = 0, last_read_date = NOW() AT TIME ZONE 'America/Los_Angeles'
SET days_read = 1, last_read_date = pacific_today
WHERE id = 1;
END IF;
IF last_read IS DISTINCT FROM pacific_today THEN
ELSIF last_read < pacific_today THEN
UPDATE reading_streak
SET days_read = days_read + 1, last_read_date = NOW() AT TIME ZONE 'America/Los_Angeles'
SET days_read = days_read + 1, last_read_date = pacific_today
WHERE id = 1;
END IF;
RETURN NEW;