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:
42
Cargo.lock
generated
42
Cargo.lock
generated
@@ -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",
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user