From 95bbd429de7aa57304eec15f3a93063584933cde Mon Sep 17 00:00:00 2001 From: "NG (Graham)" Date: Sun, 26 Jul 2026 17:48:01 -0400 Subject: [PATCH] Fix rendering error in user dashboard on serious databases --- Cargo.lock | 42 ++++++++++++++++----------------- Cargo.toml | 2 +- rc_core/src/persist/user/web.rs | 4 ++-- rc_database/src/wrapper.rs | 12 +++++----- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1e73bd6..1b1b865 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3078,7 +3078,7 @@ checksum = "059c95245738cdc7b40078cdd51a23200252a4c0a0a6dd005136152b3f467a4a" [[package]] name = "oj_cdn" -version = "1.3.0" +version = "1.3.1" dependencies = [ "actix-files", "actix-web", @@ -3107,7 +3107,7 @@ dependencies = [ [[package]] name = "oj_polariton_auth" -version = "1.3.0" +version = "1.3.1" dependencies = [ "log", "num", @@ -3119,7 +3119,7 @@ dependencies = [ [[package]] name = "oj_rc_auth" -version = "1.3.0" +version = "1.3.1" dependencies = [ "actix-files", "actix-web", @@ -3144,7 +3144,7 @@ dependencies = [ [[package]] name = "oj_rc_chat" -version = "1.3.0" +version = "1.3.1" dependencies = [ "clap", "env_logger", @@ -3157,7 +3157,7 @@ dependencies = [ [[package]] name = "oj_rc_chat_room" -version = "1.3.0" +version = "1.3.1" dependencies = [ "async-trait", "chrono", @@ -3180,7 +3180,7 @@ dependencies = [ [[package]] name = "oj_rc_core" -version = "1.3.0" +version = "1.3.1" dependencies = [ "argon2", "async-trait", @@ -3212,7 +3212,7 @@ dependencies = [ [[package]] name = "oj_rc_database" -version = "1.3.0" +version = "1.3.1" dependencies = [ "async-trait", "itertools 0.14.0", @@ -3225,7 +3225,7 @@ dependencies = [ [[package]] name = "oj_rc_factory" -version = "1.3.0" +version = "1.3.1" dependencies = [ "async-trait", "base64 0.22.1", @@ -3240,7 +3240,7 @@ dependencies = [ [[package]] name = "oj_rc_factory_web" -version = "1.3.0" +version = "1.3.1" dependencies = [ "actix-files", "actix-web", @@ -3259,7 +3259,7 @@ dependencies = [ [[package]] name = "oj_rc_lobby" -version = "1.3.0" +version = "1.3.1" dependencies = [ "clap", "env_logger", @@ -3272,7 +3272,7 @@ dependencies = [ [[package]] name = "oj_rc_lobby_room" -version = "1.3.0" +version = "1.3.1" dependencies = [ "async-trait", "chrono", @@ -3293,7 +3293,7 @@ dependencies = [ [[package]] name = "oj_rc_microtransactions" -version = "1.3.0" +version = "1.3.1" dependencies = [ "actix-web", "clap", @@ -3307,7 +3307,7 @@ dependencies = [ [[package]] name = "oj_rc_multiplayer" -version = "1.3.0" +version = "1.3.1" dependencies = [ "async-trait", "atomic_float", @@ -3330,7 +3330,7 @@ dependencies = [ [[package]] name = "oj_rc_plugins" -version = "1.3.0" +version = "1.3.1" dependencies = [ "libloading", "log", @@ -3338,7 +3338,7 @@ dependencies = [ [[package]] name = "oj_rc_services" -version = "1.3.0" +version = "1.3.1" dependencies = [ "clap", "env_logger", @@ -3351,7 +3351,7 @@ dependencies = [ [[package]] name = "oj_rc_services_room" -version = "1.3.0" +version = "1.3.1" dependencies = [ "async-trait", "chrono", @@ -3377,7 +3377,7 @@ dependencies = [ [[package]] name = "oj_rc_singleplayer" -version = "1.3.0" +version = "1.3.1" dependencies = [ "clap", "env_logger", @@ -3390,7 +3390,7 @@ dependencies = [ [[package]] name = "oj_rc_singleplayer_room" -version = "1.3.0" +version = "1.3.1" dependencies = [ "async-trait", "chrono", @@ -3408,7 +3408,7 @@ dependencies = [ [[package]] name = "oj_rc_social" -version = "1.3.0" +version = "1.3.1" dependencies = [ "clap", "env_logger", @@ -3421,7 +3421,7 @@ dependencies = [ [[package]] name = "oj_rc_social_room" -version = "1.3.0" +version = "1.3.1" dependencies = [ "async-trait", "chrono", @@ -3439,7 +3439,7 @@ dependencies = [ [[package]] name = "oj_rc_society" -version = "1.3.0" +version = "1.3.1" dependencies = [ "actix-files", "actix-identity", diff --git a/Cargo.toml b/Cargo.toml index a5f70f7..2fc0aa8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "1.3.0" +version = "1.3.1" edition = "2024" repository = "https://git.ngram.ca/OpenJam/rc-servers" license = "GPL-3.0-only" diff --git a/rc_core/src/persist/user/web.rs b/rc_core/src/persist/user/web.rs index ac1c3b0..3846ec1 100644 --- a/rc_core/src/persist/user/web.rs +++ b/rc_core/src/persist/user/web.rs @@ -110,7 +110,7 @@ impl super::WebUser for super::account_json::UserData { async fn garage_stats(&self) -> Result> { let vehicle_count = self.db.garage_count_by_user_id(self.account.id).await?; let regular_count = self.db.garage_count_by_user_id_between(self.account.id, 2_000, 1).await?; - let mega_count = self.db.garage_count_by_user_id_between(self.account.id, u32::MAX as u64, 2_000).await?; + let mega_count = self.db.garage_count_by_user_id_between(self.account.id, u32::MAX, 2_000).await?; let empty_count = self.db.garage_count_by_user_id_between(self.account.id, 0, 0).await?; let factory_count = self.db.garage_count_by_user_id_factory(self.account.id).await?; let storage_size = self.db.garage_storage_by_user_id(self.account.id).await?; @@ -121,7 +121,7 @@ impl super::WebUser for super::account_json::UserData { mega_vehicle_total: mega_count, empty_vehicle_total: empty_count, factory_vehicle_total: factory_count, - storage_bytes_total: storage_size, + storage_bytes_total: storage_size.map(|size| size.try_into().unwrap_or(0)), selected_garage: selected_garage_slot, }) } diff --git a/rc_database/src/wrapper.rs b/rc_database/src/wrapper.rs index 4dc53c1..02bcb79 100644 --- a/rc_database/src/wrapper.rs +++ b/rc_database/src/wrapper.rs @@ -235,11 +235,11 @@ impl Database { .await } - pub async fn garage_count_by_user_id_between(&self, user_id: i32, max_cpu: u64, min_cpu: u64) -> Result { + pub async fn garage_count_by_user_id_between(&self, user_id: i32, max_cpu: u32, min_cpu: u32) -> Result { crate::schema::garage::Entity::find() .filter(crate::schema::garage::Column::UserId.eq(user_id)) - .filter(crate::schema::garage::Column::TotalRobotCpu.lte(max_cpu)) - .filter(crate::schema::garage::Column::TotalRobotCpu.gte(min_cpu)) + .filter(crate::schema::garage::Column::TotalRobotCpu.lte(max_cpu as i32)) + .filter(crate::schema::garage::Column::TotalRobotCpu.gte(min_cpu as i32)) .count(self.orm.as_ref()) .await } @@ -252,7 +252,7 @@ impl Database { .await } - pub async fn garage_storage_by_user_id(&self, user_id: i32) -> Result, sea_orm::DbErr> { + pub async fn garage_storage_by_user_id(&self, user_id: i32) -> Result, sea_orm::DbErr> { let size = match self.orm.as_ref() { // TODO implement support in other databases sea_orm::DatabaseConnection::SqlxPostgresPoolConnection(_) => { @@ -276,7 +276,7 @@ impl Database { .arg(sea_orm::sea_query::Expr::col((crate::schema::garage::Entity, sea_orm::sea_query::Asterisk))) , "column") .filter(crate::schema::garage::Column::UserId.eq(user_id)) - .into_model::>() + .into_model::>() .one(self.orm.as_ref()) .await?; result.map(|x| x.column) @@ -456,7 +456,7 @@ impl Database { pub async fn count_sanctions_by_user_id_and_ack(&self, user_id: i32, is_acked: bool) -> Result { crate::schema::sanction::Entity::find() .filter(crate::schema::sanction::Column::UserId.eq(user_id)) - .filter(crate::schema::sanction::Column::Acknowledged.eq(is_acked)) + .filter(if is_acked { crate::schema::sanction::Column::Acknowledged.is_not_null() } else { crate::schema::sanction::Column::Acknowledged.is_null() }) //.order_by_asc(crate::schema::sanction::Column::CreationTime) .count(self.orm.as_ref()) .await