Skip to main content

max / goingson

2.2 KB · 63 lines History Blame Raw
1 -- Daily review notes: per-day reflection persisted to SQLite (migrated from localStorage).
2 CREATE TABLE IF NOT EXISTS daily_notes (
3 id TEXT PRIMARY KEY NOT NULL,
4 user_id TEXT NOT NULL,
5 note_date TEXT NOT NULL, -- YYYY-MM-DD
6 went_well TEXT NOT NULL DEFAULT '',
7 could_improve TEXT NOT NULL DEFAULT '',
8 is_reviewed INTEGER NOT NULL DEFAULT 0,
9 reviewed_at TEXT,
10 created_at TEXT NOT NULL DEFAULT (datetime('now')),
11 updated_at TEXT NOT NULL DEFAULT (datetime('now')),
12 UNIQUE(user_id, note_date),
13 FOREIGN KEY (user_id) REFERENCES users(id)
14 );
15
16 CREATE INDEX IF NOT EXISTS idx_daily_notes_user_date ON daily_notes(user_id, note_date);
17
18 -- ── Sync triggers ──
19
20 CREATE TRIGGER IF NOT EXISTS sync_trg_daily_notes_insert
21 AFTER INSERT ON daily_notes
22 WHEN (SELECT value FROM sync_state WHERE key = 'applying_remote') != '1'
23 BEGIN
24 INSERT INTO sync_changelog (table_name, op, row_id, data)
25 VALUES ('daily_notes', 'INSERT', NEW.id, json_object(
26 'id', NEW.id,
27 'user_id', NEW.user_id,
28 'note_date', NEW.note_date,
29 'went_well', NEW.went_well,
30 'could_improve', NEW.could_improve,
31 'is_reviewed', NEW.is_reviewed,
32 'reviewed_at', NEW.reviewed_at,
33 'created_at', NEW.created_at,
34 'updated_at', NEW.updated_at
35 ));
36 END;
37
38 CREATE TRIGGER IF NOT EXISTS sync_trg_daily_notes_update
39 AFTER UPDATE ON daily_notes
40 WHEN (SELECT value FROM sync_state WHERE key = 'applying_remote') != '1'
41 BEGIN
42 INSERT INTO sync_changelog (table_name, op, row_id, data)
43 VALUES ('daily_notes', 'UPDATE', NEW.id, json_object(
44 'id', NEW.id,
45 'user_id', NEW.user_id,
46 'note_date', NEW.note_date,
47 'went_well', NEW.went_well,
48 'could_improve', NEW.could_improve,
49 'is_reviewed', NEW.is_reviewed,
50 'reviewed_at', NEW.reviewed_at,
51 'created_at', NEW.created_at,
52 'updated_at', NEW.updated_at
53 ));
54 END;
55
56 CREATE TRIGGER IF NOT EXISTS sync_trg_daily_notes_delete
57 AFTER DELETE ON daily_notes
58 WHEN (SELECT value FROM sync_state WHERE key = 'applying_remote') != '1'
59 BEGIN
60 INSERT INTO sync_changelog (table_name, op, row_id, data)
61 VALUES ('daily_notes', 'DELETE', OLD.id, NULL);
62 END;
63