fix(update_days_read.sql): corrects reading streak function
This commit is contained in:
parent
61af1e0f23
commit
81e738621c
3 changed files with 9 additions and 9 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue