aboutsummaryrefslogtreecommitdiff
path: root/backend/database/init.sql
diff options
context:
space:
mode:
Diffstat (limited to 'backend/database/init.sql')
-rw-r--r--backend/database/init.sql45
1 files changed, 35 insertions, 10 deletions
diff --git a/backend/database/init.sql b/backend/database/init.sql
index 77a88f5..51bf2af 100644
--- a/backend/database/init.sql
+++ b/backend/database/init.sql
@@ -12,6 +12,10 @@ CREATE TABLE users (
12 PRIMARY KEY (steam_id) 12 PRIMARY KEY (steam_id)
13); 13);
14 14
15CREATE TRIGGER "users"
16AFTER INSERT OR UPDATE OR DELETE ON "users"
17FOR EACH ROW EXECUTE FUNCTION log_audit();
18
15CREATE TABLE games ( 19CREATE TABLE games (
16 id SERIAL, 20 id SERIAL,
17 name TEXT NOT NULL, 21 name TEXT NOT NULL,
@@ -72,6 +76,10 @@ CREATE TABLE map_history (
72 UNIQUE (map_id, category_id, score_count) 76 UNIQUE (map_id, category_id, score_count)
73); 77);
74 78
79CREATE TRIGGER "map_history"
80AFTER INSERT OR UPDATE OR DELETE ON "map_history"
81FOR EACH ROW EXECUTE FUNCTION log_audit();
82
75CREATE TABLE map_ratings ( 83CREATE TABLE map_ratings (
76 id SERIAL, 84 id SERIAL,
77 map_id SMALLINT NOT NULL, 85 map_id SMALLINT NOT NULL,
@@ -98,6 +106,10 @@ CREATE TABLE map_discussions (
98 FOREIGN KEY (user_id) REFERENCES users(steam_id) 106 FOREIGN KEY (user_id) REFERENCES users(steam_id)
99); 107);
100 108
109CREATE TRIGGER "map_discussions"
110AFTER INSERT OR UPDATE OR DELETE ON "map_discussions"
111FOR EACH ROW EXECUTE FUNCTION log_audit();
112
101CREATE TABLE map_discussions_comments ( 113CREATE TABLE map_discussions_comments (
102 id SERIAL, 114 id SERIAL,
103 discussion_id INT NOT NULL, 115 discussion_id INT NOT NULL,
@@ -109,6 +121,10 @@ CREATE TABLE map_discussions_comments (
109 FOREIGN KEY (user_id) REFERENCES users(steam_id) 121 FOREIGN KEY (user_id) REFERENCES users(steam_id)
110); 122);
111 123
124CREATE TRIGGER "map_discussions_comments"
125AFTER INSERT OR UPDATE OR DELETE ON "map_discussions_comments"
126FOR EACH ROW EXECUTE FUNCTION log_audit();
127
112CREATE TABLE map_discussions_upvotes ( 128CREATE TABLE map_discussions_upvotes (
113 id SERIAL, 129 id SERIAL,
114 discussion_id INT NOT NULL, 130 discussion_id INT NOT NULL,
@@ -140,6 +156,10 @@ CREATE TABLE records_sp (
140 FOREIGN KEY (demo_id) REFERENCES demos(id) 156 FOREIGN KEY (demo_id) REFERENCES demos(id)
141); 157);
142 158
159CREATE TRIGGER "records_sp"
160AFTER INSERT OR UPDATE OR DELETE ON "records_sp"
161FOR EACH ROW EXECUTE FUNCTION log_audit();
162
143CREATE TABLE records_mp ( 163CREATE TABLE records_mp (
144 id SERIAL, 164 id SERIAL,
145 map_id SMALLINT NOT NULL, 165 map_id SMALLINT NOT NULL,
@@ -159,6 +179,10 @@ CREATE TABLE records_mp (
159 FOREIGN KEY (partner_demo_id) REFERENCES demos(id) 179 FOREIGN KEY (partner_demo_id) REFERENCES demos(id)
160); 180);
161 181
182CREATE TRIGGER "records_mp"
183AFTER INSERT OR UPDATE OR DELETE ON "records_mp"
184FOR EACH ROW EXECUTE FUNCTION log_audit();
185
162CREATE TABLE titles ( 186CREATE TABLE titles (
163 id SERIAL, 187 id SERIAL,
164 title_name TEXT NOT NULL, 188 title_name TEXT NOT NULL,
@@ -179,13 +203,14 @@ CREATE TABLE countries (
179 PRIMARY KEY (country_code) 203 PRIMARY KEY (country_code)
180); 204);
181 205
182CREATE TABLE logs ( 206CREATE TABLE audit (
183 id SERIAL, 207 id SERIAL,
184 user_id TEXT NOT NULL, 208 table_name TEXT NOT NULL,
185 type TEXT NOT NULL, 209 operation_type TEXT NOT NULL, -- 'INSERT', 'UPDATE', or 'DELETE'
186 description TEXT NOT NULL, 210 old_data JSONB,
187 message TEXT NOT NULL DEFAULT, 211 new_data JSONB,
188 date TIMESTAMP NOT NULL DEFAULT now(), 212 changed_by TEXT NOT NULL,
189 PRIMARY KEY (id), 213 changed_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
190 FOREIGN KEY (user_id) REFERENCES users(steam_id) 214 PRIMARY KEY (id),
191); \ No newline at end of file 215 FOREIGN KEY (changed_by) REFERENCES users(steam_id)
216);