From e8de96b2d024f5777e54d4a33055404f715fc1f1 Mon Sep 17 00:00:00 2001 From: BAaboe Date: Mon, 4 Aug 2025 22:51:05 +0200 Subject: [PATCH] feat: added audit logs table to the database --- .../2025-08-04-195527_add_audit_log/down.sql | 2 ++ .../2025-08-04-195527_add_audit_log/up.sql | 14 +++++++++++ src/schema.rs | 25 +++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 migrations/2025-08-04-195527_add_audit_log/down.sql create mode 100644 migrations/2025-08-04-195527_add_audit_log/up.sql diff --git a/migrations/2025-08-04-195527_add_audit_log/down.sql b/migrations/2025-08-04-195527_add_audit_log/down.sql new file mode 100644 index 0000000..f7c5a37 --- /dev/null +++ b/migrations/2025-08-04-195527_add_audit_log/down.sql @@ -0,0 +1,2 @@ +-- This file should undo anything in `up.sql` +DROP TABLE audit_logs; diff --git a/migrations/2025-08-04-195527_add_audit_log/up.sql b/migrations/2025-08-04-195527_add_audit_log/up.sql new file mode 100644 index 0000000..dbd923d --- /dev/null +++ b/migrations/2025-08-04-195527_add_audit_log/up.sql @@ -0,0 +1,14 @@ +-- Your SQL goes here +CREATE TABLE audit_logs ( + uuid UUID PRIMARY KEY NOT NULL, + guild_uuid UUID NOT NULL, + action_id INT2 NOT NULL, + by_uuid UUID NOT NULL REFERENCES guild_members(uuid), + channel_uuid UUID REFERENCES channels(uuid) DEFAULT NULL, + user_uuid UUID REFERENCES users(uuid) DEFAULT NULL, + message_uuid UUID REFERENCES messages(uuid) DEFAULT NULL, + role_uuid UUID REFERENCES roles(uuid) DEFAULT NULL, + audit_message VARCHAR(200) DEFAULT NULL, + changed_from VARCHAR(200) DEFAULT NULL, + changed_to VARCHAR(200) DEFAULT NULL +); diff --git a/src/schema.rs b/src/schema.rs index 88f6155..b0e27b8 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -11,6 +11,25 @@ diesel::table! { } } +diesel::table! { + audit_logs (uuid) { + uuid -> Uuid, + guild_uuid -> Uuid, + action_id -> Int2, + by_uuid -> Uuid, + channel_uuid -> Nullable, + user_uuid -> Nullable, + message_uuid -> Nullable, + role_uuid -> Nullable, + #[max_length = 200] + audit_message -> Nullable, + #[max_length = 200] + changed_from -> Nullable, + #[max_length = 200] + changed_to -> Nullable, + } +} + diesel::table! { channel_permissions (channel_uuid, role_uuid) { channel_uuid -> Uuid, @@ -163,6 +182,11 @@ diesel::table! { diesel::joinable!(access_tokens -> refresh_tokens (refresh_token)); diesel::joinable!(access_tokens -> users (uuid)); +diesel::joinable!(audit_logs -> channels (channel_uuid)); +diesel::joinable!(audit_logs -> guild_members (by_uuid)); +diesel::joinable!(audit_logs -> messages (message_uuid)); +diesel::joinable!(audit_logs -> roles (role_uuid)); +diesel::joinable!(audit_logs -> users (user_uuid)); diesel::joinable!(channel_permissions -> channels (channel_uuid)); diesel::joinable!(channel_permissions -> roles (role_uuid)); diesel::joinable!(channels -> guilds (guild_uuid)); @@ -182,6 +206,7 @@ diesel::joinable!(roles -> guilds (guild_uuid)); diesel::allow_tables_to_appear_in_same_query!( access_tokens, + audit_logs, channel_permissions, channels, friend_requests,