Skip to main content

max / goingson

2.6 KB · 67 lines History Blame Raw
1 -- Event reminders: per-event list of seconds before start_time to fire a
2 -- desktop notification. Stored as a JSON array of non-negative integers,
3 -- e.g. [0, 300, 900] for "at time", "5 minutes before", and "15 minutes
4 -- before". NULL or "[]" means no reminders configured.
5
6 ALTER TABLE events ADD COLUMN reminder_offsets_seconds TEXT;
7
8 -- ── Rebuild event sync triggers to include reminder_offsets_seconds (19 cols) ──
9
10 DROP TRIGGER IF EXISTS sync_trg_events_insert;
11 CREATE TRIGGER IF NOT EXISTS sync_trg_events_insert
12 AFTER INSERT ON events
13 WHEN (SELECT value FROM sync_state WHERE key = 'applying_remote') != '1'
14 BEGIN
15 INSERT INTO sync_changelog (table_name, op, row_id, data)
16 VALUES ('events', 'INSERT', NEW.id, json_object(
17 'id', NEW.id,
18 'project_id', NEW.project_id,
19 'title', NEW.title,
20 'description', NEW.description,
21 'start_time', NEW.start_time,
22 'end_time', NEW.end_time,
23 'location', NEW.location,
24 'user_id', NEW.user_id,
25 'linked_task_id', NEW.linked_task_id,
26 'recurrence', NEW.recurrence,
27 'recurrence_parent_id', NEW.recurrence_parent_id,
28 'recurrence_rule', NEW.recurrence_rule,
29 'contact_id', NEW.contact_id,
30 'block_type', NEW.block_type,
31 'external_source', NEW.external_source,
32 'external_id', NEW.external_id,
33 'is_read_only', NEW.is_read_only,
34 'snoozed_until', NEW.snoozed_until,
35 'reminder_offsets_seconds', NEW.reminder_offsets_seconds
36 ));
37 END;
38
39 DROP TRIGGER IF EXISTS sync_trg_events_update;
40 CREATE TRIGGER IF NOT EXISTS sync_trg_events_update
41 AFTER UPDATE ON events
42 WHEN (SELECT value FROM sync_state WHERE key = 'applying_remote') != '1'
43 BEGIN
44 INSERT INTO sync_changelog (table_name, op, row_id, data)
45 VALUES ('events', 'UPDATE', NEW.id, json_object(
46 'id', NEW.id,
47 'project_id', NEW.project_id,
48 'title', NEW.title,
49 'description', NEW.description,
50 'start_time', NEW.start_time,
51 'end_time', NEW.end_time,
52 'location', NEW.location,
53 'user_id', NEW.user_id,
54 'linked_task_id', NEW.linked_task_id,
55 'recurrence', NEW.recurrence,
56 'recurrence_parent_id', NEW.recurrence_parent_id,
57 'recurrence_rule', NEW.recurrence_rule,
58 'contact_id', NEW.contact_id,
59 'block_type', NEW.block_type,
60 'external_source', NEW.external_source,
61 'external_id', NEW.external_id,
62 'is_read_only', NEW.is_read_only,
63 'snoozed_until', NEW.snoozed_until,
64 'reminder_offsets_seconds', NEW.reminder_offsets_seconds
65 ));
66 END;
67