1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00

Fix rendering error in user dashboard on serious databases

This commit is contained in:
NG (Graham)
2026-07-26 17:48:01 -04:00
parent 056d127960
commit 95bbd429de
4 changed files with 30 additions and 30 deletions

42
Cargo.lock generated
View File

@@ -3078,7 +3078,7 @@ checksum = "059c95245738cdc7b40078cdd51a23200252a4c0a0a6dd005136152b3f467a4a"
[[package]] [[package]]
name = "oj_cdn" name = "oj_cdn"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"actix-files", "actix-files",
"actix-web", "actix-web",
@@ -3107,7 +3107,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_polariton_auth" name = "oj_polariton_auth"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"log", "log",
"num", "num",
@@ -3119,7 +3119,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_auth" name = "oj_rc_auth"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"actix-files", "actix-files",
"actix-web", "actix-web",
@@ -3144,7 +3144,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_chat" name = "oj_rc_chat"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"clap", "clap",
"env_logger", "env_logger",
@@ -3157,7 +3157,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_chat_room" name = "oj_rc_chat_room"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"chrono", "chrono",
@@ -3180,7 +3180,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_core" name = "oj_rc_core"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"argon2", "argon2",
"async-trait", "async-trait",
@@ -3212,7 +3212,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_database" name = "oj_rc_database"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"itertools 0.14.0", "itertools 0.14.0",
@@ -3225,7 +3225,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_factory" name = "oj_rc_factory"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"base64 0.22.1", "base64 0.22.1",
@@ -3240,7 +3240,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_factory_web" name = "oj_rc_factory_web"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"actix-files", "actix-files",
"actix-web", "actix-web",
@@ -3259,7 +3259,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_lobby" name = "oj_rc_lobby"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"clap", "clap",
"env_logger", "env_logger",
@@ -3272,7 +3272,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_lobby_room" name = "oj_rc_lobby_room"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"chrono", "chrono",
@@ -3293,7 +3293,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_microtransactions" name = "oj_rc_microtransactions"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"actix-web", "actix-web",
"clap", "clap",
@@ -3307,7 +3307,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_multiplayer" name = "oj_rc_multiplayer"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"atomic_float", "atomic_float",
@@ -3330,7 +3330,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_plugins" name = "oj_rc_plugins"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"libloading", "libloading",
"log", "log",
@@ -3338,7 +3338,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_services" name = "oj_rc_services"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"clap", "clap",
"env_logger", "env_logger",
@@ -3351,7 +3351,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_services_room" name = "oj_rc_services_room"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"chrono", "chrono",
@@ -3377,7 +3377,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_singleplayer" name = "oj_rc_singleplayer"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"clap", "clap",
"env_logger", "env_logger",
@@ -3390,7 +3390,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_singleplayer_room" name = "oj_rc_singleplayer_room"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"chrono", "chrono",
@@ -3408,7 +3408,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_social" name = "oj_rc_social"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"clap", "clap",
"env_logger", "env_logger",
@@ -3421,7 +3421,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_social_room" name = "oj_rc_social_room"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"chrono", "chrono",
@@ -3439,7 +3439,7 @@ dependencies = [
[[package]] [[package]]
name = "oj_rc_society" name = "oj_rc_society"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"actix-files", "actix-files",
"actix-identity", "actix-identity",

View File

@@ -1,5 +1,5 @@
[workspace.package] [workspace.package]
version = "1.3.0" version = "1.3.1"
edition = "2024" edition = "2024"
repository = "https://git.ngram.ca/OpenJam/rc-servers" repository = "https://git.ngram.ca/OpenJam/rc-servers"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View File

@@ -110,7 +110,7 @@ impl super::WebUser for super::account_json::UserData {
async fn garage_stats(&self) -> Result<super::GarageWebStats, Box<dyn std::error::Error>> { async fn garage_stats(&self) -> Result<super::GarageWebStats, Box<dyn std::error::Error>> {
let vehicle_count = self.db.garage_count_by_user_id(self.account.id).await?; 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 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 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 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?; 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, mega_vehicle_total: mega_count,
empty_vehicle_total: empty_count, empty_vehicle_total: empty_count,
factory_vehicle_total: factory_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, selected_garage: selected_garage_slot,
}) })
} }

View File

@@ -235,11 +235,11 @@ impl Database {
.await .await
} }
pub async fn garage_count_by_user_id_between(&self, user_id: i32, max_cpu: u64, min_cpu: u64) -> Result<u64, sea_orm::DbErr> { pub async fn garage_count_by_user_id_between(&self, user_id: i32, max_cpu: u32, min_cpu: u32) -> Result<u64, sea_orm::DbErr> {
crate::schema::garage::Entity::find() crate::schema::garage::Entity::find()
.filter(crate::schema::garage::Column::UserId.eq(user_id)) .filter(crate::schema::garage::Column::UserId.eq(user_id))
.filter(crate::schema::garage::Column::TotalRobotCpu.lte(max_cpu)) .filter(crate::schema::garage::Column::TotalRobotCpu.lte(max_cpu as i32))
.filter(crate::schema::garage::Column::TotalRobotCpu.gte(min_cpu)) .filter(crate::schema::garage::Column::TotalRobotCpu.gte(min_cpu as i32))
.count(self.orm.as_ref()) .count(self.orm.as_ref())
.await .await
} }
@@ -252,7 +252,7 @@ impl Database {
.await .await
} }
pub async fn garage_storage_by_user_id(&self, user_id: i32) -> Result<Option<u64>, sea_orm::DbErr> { pub async fn garage_storage_by_user_id(&self, user_id: i32) -> Result<Option<i32>, sea_orm::DbErr> {
let size = match self.orm.as_ref() { let size = match self.orm.as_ref() {
// TODO implement support in other databases // TODO implement support in other databases
sea_orm::DatabaseConnection::SqlxPostgresPoolConnection(_) => { 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))) .arg(sea_orm::sea_query::Expr::col((crate::schema::garage::Entity, sea_orm::sea_query::Asterisk)))
, "column") , "column")
.filter(crate::schema::garage::Column::UserId.eq(user_id)) .filter(crate::schema::garage::Column::UserId.eq(user_id))
.into_model::<crate::schema::common_query::SingleColumn<u64>>() .into_model::<crate::schema::common_query::SingleColumn<i32>>()
.one(self.orm.as_ref()) .one(self.orm.as_ref())
.await?; .await?;
result.map(|x| x.column) 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<u64, sea_orm::DbErr> { pub async fn count_sanctions_by_user_id_and_ack(&self, user_id: i32, is_acked: bool) -> Result<u64, sea_orm::DbErr> {
crate::schema::sanction::Entity::find() crate::schema::sanction::Entity::find()
.filter(crate::schema::sanction::Column::UserId.eq(user_id)) .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) //.order_by_asc(crate::schema::sanction::Column::CreationTime)
.count(self.orm.as_ref()) .count(self.orm.as_ref())
.await .await