diff --git a/src/api/v1/guilds/uuid/auditlogs.rs b/src/api/v1/guilds/uuid/auditlogs.rs index c8033e3..329e0c5 100644 --- a/src/api/v1/guilds/uuid/auditlogs.rs +++ b/src/api/v1/guilds/uuid/auditlogs.rs @@ -9,7 +9,11 @@ use axum::{ }; use crate::{ - api::v1::auth::CurrentUser, error::Error, objects::{AuditLog, Member, PaginationRequest, Permissions}, utils::global_checks, AppState + AppState, + api::v1::auth::CurrentUser, + error::Error, + objects::{AuditLog, Member, PaginationRequest, Permissions}, + utils::global_checks, }; pub async fn get( @@ -23,15 +27,11 @@ pub async fn get( global_checks(&mut conn, &app_state.config, uuid).await?; let caller = Member::check_membership(&mut conn, uuid, guild_uuid).await?; - caller.check_permission(&mut conn, &app_state.cache_pool, Permissions::ManageGuild).await?; - + caller + .check_permission(&mut conn, &app_state.cache_pool, Permissions::ManageGuild) + .await?; - let logs = AuditLog::fetch_page( - &mut conn, - guild_uuid, - pagination, - ) - .await?; + let logs = AuditLog::fetch_page(&mut conn, guild_uuid, pagination).await?; Ok((StatusCode::OK, Json(logs))) } diff --git a/src/api/v1/guilds/uuid/mod.rs b/src/api/v1/guilds/uuid/mod.rs index 81d749a..6e57704 100644 --- a/src/api/v1/guilds/uuid/mod.rs +++ b/src/api/v1/guilds/uuid/mod.rs @@ -12,12 +12,12 @@ use axum::{ use bytes::Bytes; use uuid::Uuid; +mod auditlogs; mod bans; mod channels; mod invites; mod members; mod roles; -mod auditlogs; use crate::{ AppState, diff --git a/src/objects/auditlog.rs b/src/objects/auditlog.rs index 3b5ff6e..b5e58e9 100644 --- a/src/objects/auditlog.rs +++ b/src/objects/auditlog.rs @@ -1,29 +1,33 @@ -use uuid::Uuid; -use diesel::{insert_into, Insertable, QueryDsl, Queryable, Selectable, SelectableHelper, ExpressionMethods}; -use serde::{Deserialize, Serialize}; -use crate::{error::Error, objects::{load_or_empty, Pagination, PaginationRequest}, schema::audit_logs, Conn}; +use crate::{ + Conn, + error::Error, + objects::{Pagination, PaginationRequest, load_or_empty}, + schema::audit_logs, +}; +use diesel::{ + ExpressionMethods, Insertable, QueryDsl, Queryable, Selectable, SelectableHelper, insert_into, +}; use diesel_async::RunQueryDsl; - +use serde::{Deserialize, Serialize}; +use uuid::Uuid; #[derive(Insertable, Selectable, Queryable, Serialize, Deserialize, Clone)] #[diesel(table_name = audit_logs)] #[diesel(check_for_backend(diesel::pg::Pg))] pub struct AuditLog { - - pub uuid: Uuid, - pub guild_uuid: Uuid, - pub action_id: i16, - pub by_uuid: Uuid, - pub channel_uuid: Option, - pub user_uuid: Option, - pub message_uuid: Option, - pub role_uuid: Option, - pub audit_message: Option, - pub changed_from: Option, - pub changed_to: Option, + pub uuid: Uuid, + pub guild_uuid: Uuid, + pub action_id: i16, + pub by_uuid: Uuid, + pub channel_uuid: Option, + pub user_uuid: Option, + pub message_uuid: Option, + pub role_uuid: Option, + pub audit_message: Option, + pub changed_from: Option, + pub changed_to: Option, } - impl AuditLog { pub async fn count(conn: &mut Conn, guild_uuid: Uuid) -> Result { use audit_logs::dsl; @@ -40,7 +44,6 @@ impl AuditLog { guild_uuid: Uuid, pagination: PaginationRequest, ) -> Result, Error> { - // TODO: Maybe add cache, but I do not know how let per_page = pagination.per_page.unwrap_or(20); let offset = (pagination.page - 1) * per_page; @@ -59,7 +62,7 @@ impl AuditLog { .offset(offset as i64) .select(AuditLog::as_select()) .load(conn) - .await + .await, )?; let pages = (AuditLog::count(conn, guild_uuid).await? as f32 / per_page as f32).ceil(); @@ -70,7 +73,7 @@ impl AuditLog { pages: pages as i32, page: pagination.page, }; - + Ok(paginated_logs) } @@ -87,7 +90,7 @@ impl AuditLog { audit_message: Option, changed_from: Option, changed_to: Option, - ) ->Result<(), Error> { + ) -> Result<(), Error> { let audit_log = AuditLog { uuid: Uuid::now_v7(), guild_uuid, @@ -99,7 +102,7 @@ impl AuditLog { role_uuid, audit_message, changed_from, - changed_to + changed_to, }; insert_into(audit_logs::table) diff --git a/src/objects/mod.rs b/src/objects/mod.rs index 3bef473..d82755e 100644 --- a/src/objects/mod.rs +++ b/src/objects/mod.rs @@ -7,6 +7,7 @@ use log::debug; use serde::{Deserialize, Serialize}; use uuid::Uuid; +mod auditlog; mod bans; mod channel; mod email_token; @@ -19,8 +20,8 @@ mod message; mod password_reset_token; mod role; mod user; -mod auditlog; +pub use auditlog::AuditLog; pub use bans::GuildBan; pub use channel::Channel; pub use email_token::EmailToken; @@ -35,7 +36,6 @@ pub use password_reset_token::PasswordResetToken; pub use role::Permissions; pub use role::Role; pub use user::User; -pub use auditlog::AuditLog; use crate::error::Error;