diff options
| author | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2024-10-31 22:06:00 +0300 |
|---|---|---|
| committer | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2024-10-31 22:06:00 +0300 |
| commit | 4210c9b38f9053f6720a6bebaadefd24c542eaa9 (patch) | |
| tree | 5b0061e23cf91291ed9e5f387766148d45103591 /backend/database/init.sql | |
| parent | chore: change repo name to lphub (diff) | |
| download | lphub-4210c9b38f9053f6720a6bebaadefd24c542eaa9.tar.gz lphub-4210c9b38f9053f6720a6bebaadefd24c542eaa9.tar.bz2 lphub-4210c9b38f9053f6720a6bebaadefd24c542eaa9.zip | |
backend: better auth check, audit logging
Diffstat (limited to 'backend/database/init.sql')
| -rw-r--r-- | backend/database/init.sql | 45 |
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 | ||
| 15 | CREATE TRIGGER "users" | ||
| 16 | AFTER INSERT OR UPDATE OR DELETE ON "users" | ||
| 17 | FOR EACH ROW EXECUTE FUNCTION log_audit(); | ||
| 18 | |||
| 15 | CREATE TABLE games ( | 19 | CREATE 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 | ||
| 79 | CREATE TRIGGER "map_history" | ||
| 80 | AFTER INSERT OR UPDATE OR DELETE ON "map_history" | ||
| 81 | FOR EACH ROW EXECUTE FUNCTION log_audit(); | ||
| 82 | |||
| 75 | CREATE TABLE map_ratings ( | 83 | CREATE 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 | ||
| 109 | CREATE TRIGGER "map_discussions" | ||
| 110 | AFTER INSERT OR UPDATE OR DELETE ON "map_discussions" | ||
| 111 | FOR EACH ROW EXECUTE FUNCTION log_audit(); | ||
| 112 | |||
| 101 | CREATE TABLE map_discussions_comments ( | 113 | CREATE 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 | ||
| 124 | CREATE TRIGGER "map_discussions_comments" | ||
| 125 | AFTER INSERT OR UPDATE OR DELETE ON "map_discussions_comments" | ||
| 126 | FOR EACH ROW EXECUTE FUNCTION log_audit(); | ||
| 127 | |||
| 112 | CREATE TABLE map_discussions_upvotes ( | 128 | CREATE 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 | ||
| 159 | CREATE TRIGGER "records_sp" | ||
| 160 | AFTER INSERT OR UPDATE OR DELETE ON "records_sp" | ||
| 161 | FOR EACH ROW EXECUTE FUNCTION log_audit(); | ||
| 162 | |||
| 143 | CREATE TABLE records_mp ( | 163 | CREATE 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 | ||
| 182 | CREATE TRIGGER "records_mp" | ||
| 183 | AFTER INSERT OR UPDATE OR DELETE ON "records_mp" | ||
| 184 | FOR EACH ROW EXECUTE FUNCTION log_audit(); | ||
| 185 | |||
| 162 | CREATE TABLE titles ( | 186 | CREATE 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 | ||
| 182 | CREATE TABLE logs ( | 206 | CREATE 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 | ); | ||