-
Notifications
You must be signed in to change notification settings - Fork 97
Expand file tree
/
Copy path20251114014715_record_dates.up.sql
More file actions
50 lines (40 loc) · 1.55 KB
/
20251114014715_record_dates.up.sql
File metadata and controls
50 lines (40 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
ALTER TABLE records ADD COLUMN date TIMESTAMP WITHOUT TIME ZONE DEFAULT (NOW() AT TIME ZONE 'utc') NOT NULL;
UPDATE records
SET date = record_additions.time
FROM record_additions
WHERE records.id = record_additions.id;
-- audit logs
ALTER TABLE record_modifications ADD COLUMN date TIMESTAMP WITHOUT TIME ZONE;
CREATE OR REPLACE FUNCTION audit_record_modification() RETURNS trigger AS $record_modification_trigger$
DECLARE
progress_change SMALLINT;
video_change VARCHAR(200);
status_change RECORD_STATUS;
player_change INT;
demon_change INTEGER;
date_change TIMESTAMP WITHOUT TIME ZONE;
BEGIN
if (OLD.progress <> NEW.progress) THEN
progress_change = OLD.progress;
END IF;
IF (OLD.video <> NEW.video) THEN
video_change = OLD.video;
END IF;
IF (OLD.status_ <> NEW.status_) THEN
status_change = OLD.status_;
END IF;
IF (OLD.player <> NEW.player) THEN
player_change = OLD.player;
END IF;
IF (OLD.demon <> NEW.demon) THEN
demon_change = OLD.demon;
END IF;
IF (OLD.date <> NEW.date) THEN
date_change = OLD.date;
END IF;
INSERT INTO record_modifications (userid, id, progress, video, status_, player, demon, date)
(SELECT id, NEW.id, progress_change, video_change, status_change, player_change, demon_change, date_change
FROM active_user LIMIT 1);
RETURN NEW;
END;
$record_modification_trigger$ LANGUAGE plpgsql;