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

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "coryd.dev", "name": "coryd.dev",
"version": "5.1.4", "version": "5.1.5",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "coryd.dev", "name": "coryd.dev",
"version": "5.1.4", "version": "5.1.5",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"html-minifier-terser": "7.2.0", "html-minifier-terser": "7.2.0",

View file

@ -1,6 +1,6 @@
{ {
"name": "coryd.dev", "name": "coryd.dev",
"version": "5.1.4", "version": "5.1.5",
"description": "The source for my personal site. Built using 11ty (and other tools).", "description": "The source for my personal site. Built using 11ty (and other tools).",
"type": "module", "type": "module",
"engines": { "engines": {

View file

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