diff --git a/rc_core/src/persist/config/traits.rs b/rc_core/src/persist/config/traits.rs index a7a0edd..2322421 100644 --- a/rc_core/src/persist/config/traits.rs +++ b/rc_core/src/persist/config/traits.rs @@ -280,7 +280,7 @@ pub enum VehicleDescriptor { factory: u32, }, Database { - garage: u32, + garage: i32, }, Raw { cube_data: Vec, diff --git a/rc_core/src/persist/garage.rs b/rc_core/src/persist/garage.rs index 4545c1c..c176311 100644 --- a/rc_core/src/persist/garage.rs +++ b/rc_core/src/persist/garage.rs @@ -5,27 +5,27 @@ use super::ItemCategory; #[derive(Serialize, Deserialize, Clone, Debug)] pub struct GarageSlot { #[serde(default)] - pub slot: u32, + pub slot: i32, pub name: String, #[serde(default)] pub cubes: u32, #[serde(default)] - pub crf_id: u32, // 0 means not uploaded + pub crf_id: i32, // 0 means not uploaded #[serde(default = "default_false")] pub was_rated: bool, #[serde(default)] pub movement_categories: Vec, #[serde(default)] pub uuid: (u32, u32), - pub thumbnail_version: u32, + pub thumbnail_version: i32, #[serde(default)] - pub total_robot_cpu: u32, + pub total_robot_cpu: i32, #[serde(default)] - pub total_cosmetic_cpu: u32, + pub total_cosmetic_cpu: i32, #[serde(default)] - pub total_robot_ranking: u32, + pub total_robot_ranking: i32, #[serde(default)] - pub bay_cpu: u32, + pub bay_cpu: i32, #[serde(default = "default_false")] pub tutorial_robot: bool, #[serde(default = "default_neg_1")] @@ -79,15 +79,15 @@ impl std::convert::Into for GarageSlot crate::data::garage_bay::GarageSlotInfo { name: self.name, cubes: self.cubes, - crf_id: self.crf_id, + crf_id: self.crf_id as u32, was_rated: self.was_rated, movement_categories: self.movement_categories.into_iter().map(|x| x.into()).collect(), uuid: self.uuid, - thumbnail_version: self.thumbnail_version, - total_robot_cpu: self.total_robot_cpu, - total_cosmetic_cpu: self.total_cosmetic_cpu, - total_robot_ranking: self.total_robot_ranking, - bay_cpu: self.bay_cpu, + thumbnail_version: self.thumbnail_version as u32, + total_robot_cpu: self.total_robot_cpu as u32, + total_cosmetic_cpu: self.total_cosmetic_cpu as u32, + total_robot_ranking: self.total_robot_ranking as u32, + bay_cpu: self.bay_cpu as u32, tutorial_robot: self.tutorial_robot, starter_robot_index: self.starter_robot_index, control_type: self.control_type.into(), @@ -104,15 +104,15 @@ pub fn db_into_data(garage: oj_rc_database::schema::garage::Model) -> crate::dat crate::data::garage_bay::GarageSlotInfo { name: garage.name, cubes: cube_count, - crf_id: garage.crf_id.unwrap_or(0), + crf_id: garage.crf_id.unwrap_or(0) as u32, was_rated: garage.was_rated, movement_categories: movement_category_into_data(&garage.movement_categories), uuid: super::user::i64_split(garage.uuid), - thumbnail_version: garage.thumbnail_version, - total_robot_cpu: garage.total_robot_cpu, - total_cosmetic_cpu: garage.total_cosmetic_cpu, - total_robot_ranking: garage.total_robot_ranking, - bay_cpu: garage.bay_cpu, + thumbnail_version: garage.thumbnail_version as u32, + total_robot_cpu: garage.total_robot_cpu as u32, + total_cosmetic_cpu: garage.total_cosmetic_cpu as u32, + total_robot_ranking: garage.total_robot_ranking as u32, + bay_cpu: garage.bay_cpu as u32, tutorial_robot: garage.tutorial_robot, starter_robot_index: garage.starter_robot_index.map(|x| x as i32).unwrap_or(-1), control_type: control_ty_into_data(garage.control_type), @@ -193,7 +193,7 @@ pub enum PrefabId { factory: u32, }, Database { - garage: u32, + garage: i32, }, Raw { cube_data: Vec, diff --git a/rc_core/src/persist/user/account_json.rs b/rc_core/src/persist/user/account_json.rs index aeb7dec..3ca4b4e 100644 --- a/rc_core/src/persist/user/account_json.rs +++ b/rc_core/src/persist/user/account_json.rs @@ -180,7 +180,7 @@ impl super::UserAuthenticator for AccountProvider { }) } - async fn register(&self, info: super::RegistrationInfo) -> Result { + async fn register(&self, info: super::RegistrationInfo) -> Result { super::register_new_user(&info, &self.db).await.map_err(|e| e.to_string()) } } @@ -197,13 +197,13 @@ struct UserData { } impl UserData { - async fn load_garage_by_slot(&self, slot: u32) -> Result, oj_rc_database::sea_orm::DbErr> { + async fn load_garage_by_slot(&self, slot: i32) -> Result, oj_rc_database::sea_orm::DbErr> { //let path = self.root.join(super::GARAGE_DIR).join(format!("{}.json", id)); //crate::persist::GarageSlot::load(&path) self.db.garage_by_user_id_and_slot(self.account.id, slot).await } - async fn save_garage_by_slot(&self, data: oj_rc_database::schema::garage::ActiveModel, slot: u32) -> Result<(), oj_rc_database::sea_orm::DbErr> { + async fn save_garage_by_slot(&self, data: oj_rc_database::schema::garage::ActiveModel, slot: i32) -> Result<(), oj_rc_database::sea_orm::DbErr> { self.db.update_garage_by_user_id_and_slot(data, self.account.id, slot).await?; Ok(()) } @@ -436,7 +436,7 @@ impl super::User for UserData { async fn selected_garage(&self) -> (String, u32) { match self.db.garage_selected(self.account.id).await { - Ok(Some(selected)) => (super::i64_as_uuid_str(selected.uuid), selected.slot), + Ok(Some(selected)) => (super::i64_as_uuid_str(selected.uuid), selected.slot as u32), Ok(None) => { log::warn!("User {} does not have a selected garage", self.account.id); ("0_0".to_owned(), 0) @@ -450,7 +450,7 @@ impl super::User for UserData { async fn select_garage(&self, slot: i32) -> Result<(), i16> { self.err_on_banned().await?; - self.db.update_garage_selected_by_user_id_and_slot(self.account.id, slot as u32).await.map_err(|e| { + self.db.update_garage_selected_by_user_id_and_slot(self.account.id, slot).await.map_err(|e| { log::error!("Failed to select vehicle slot {} user_id {}: {}", slot, self.account.id, e); DATABASE_ERR }) @@ -536,11 +536,11 @@ impl super::User for UserData { weapon_order: oj_rc_database::sea_orm::ActiveValue::Set(oj_rc_database::schema::dump_csv(&vehicle.weapon_order)), robot_data: oj_rc_database::sea_orm::ActiveValue::Set(vehicle.robot_data), colour_data: oj_rc_database::sea_orm::ActiveValue::Set(vehicle.colour_data), - crf_id: if let Some(crf_id) = vehicle.crf_id { oj_rc_database::sea_orm::ActiveValue::Set(Some(crf_id as u32)) } else { Default::default() }, + crf_id: if let Some(crf_id) = vehicle.crf_id { oj_rc_database::sea_orm::ActiveValue::Set(Some(crf_id)) } else { Default::default() }, name: if let Some(new_name) = vehicle.name { oj_rc_database::sea_orm::ActiveValue::Set(new_name) } else { Default::default() }, ..Default::default() }; - self.save_garage_by_slot(entity, vehicle.slot as u32).await.map_err(|e| { + self.save_garage_by_slot(entity, vehicle.slot).await.map_err(|e| { log::error!("Failed to save vehicle slot {} for user_id {}: {}", vehicle.slot, self.account.id, e); DATABASE_ERR })?; @@ -565,7 +565,7 @@ impl super::User for UserData { self.err_on_banned().await?; let model = if let Some(slot) = reset_slot { let new_data = super::initial_data::default_reset_slot(); - if let Some(reset_g) = self.db.update_garage_by_user_id_and_slot(new_data, self.account.id, slot as u32).await.map_err(|e| { + if let Some(reset_g) = self.db.update_garage_by_user_id_and_slot(new_data, self.account.id, slot).await.map_err(|e| { log::error!("Failed to reset vehicle slot {} for user_id {}: {}", slot, self.account.id, e); DATABASE_ERR })? { @@ -599,7 +599,7 @@ impl super::User for UserData { } async fn copy_slot(&self, slot: i32, into_slot: Option, append: &str) -> Result<(), i16> { - let slot_to_copy = self.db.garage_by_user_id_and_slot(self.account.id, slot as u32).await.map_err(|e| { + let slot_to_copy = self.db.garage_by_user_id_and_slot(self.account.id, slot).await.map_err(|e| { log::error!("Failed to retrieve vehicle slot {} to copy for user_id {}: {}", slot, self.account.id, e); DATABASE_ERR })?.ok_or_else(|| { @@ -609,7 +609,7 @@ impl super::User for UserData { let new_name = format!("{} {}", slot_to_copy.name, append); let new_slot = if let Some(existing_slot) = into_slot { log::info!("Copy slot {} -> {} as `{}`", slot, existing_slot, new_name); - if let Some(existing_g) = self.db.garage_by_user_id_and_slot(self.account.id, existing_slot as u32).await.map_err(|e| { + if let Some(existing_g) = self.db.garage_by_user_id_and_slot(self.account.id, existing_slot).await.map_err(|e| { log::error!("Failed to retrieve vehicle slot {} for user_id {}: {}", slot, self.account.id, e); DATABASE_ERR })? { @@ -639,7 +639,7 @@ impl super::User for UserData { log::error!("Failed to update garage slot {} copied from {} for user_id {}: {}", existing_slot, slot, self.account.id, e); DATABASE_ERR })?; - existing_slot as u32 + existing_slot } else { log::warn!("No existing vehicle slot {} for user_id {}, copying to new slot", slot, self.account.id); return >::copy_slot(self, slot, None, append).await; @@ -657,7 +657,7 @@ impl super::User for UserData { to_insert.id = Default::default(); to_insert.creation_time = oj_rc_database::sea_orm::ActiveValue::Set(now); to_insert.uuid = oj_rc_database::sea_orm::ActiveValue::Set(uuid); - to_insert.slot = oj_rc_database::sea_orm::ActiveValue::Set(max_slot + 1); + to_insert.slot = oj_rc_database::sea_orm::ActiveValue::Set((max_slot + 1) as i32); to_insert.name = oj_rc_database::sea_orm::ActiveValue::Set(new_name); self.db.insert_garage(to_insert).await.map_err(|e| { log::error!("Failed to insert garage slot copied from {} for user_id {}: {}", slot, self.account.id, e); @@ -685,7 +685,7 @@ impl super::User for UserData { log::error!("No selected vehicle slot for user_id {}", self.account.id); DATABASE_ERR })?; - let inc_opt = self.garage_upgrades.increments.iter().enumerate().filter(|(_i, inc)| inc.cpu <= selected_slot.bay_cpu).last(); + let inc_opt = self.garage_upgrades.increments.iter().enumerate().filter(|(_i, inc)| inc.cpu <= selected_slot.bay_cpu as u32).last(); if let Some((i, _)) = inc_opt { let max_upgrade = self.garage_upgrades.increments.len() - 1; let upgrade_to = i + (increments as usize); @@ -695,7 +695,7 @@ impl super::User for UserData { } else { let upgrade_to_cpu = self.garage_upgrades.increments[upgrade_to].cpu; let entity = oj_rc_database::schema::garage::ActiveModel { - bay_cpu: oj_rc_database::sea_orm::ActiveValue::Set(upgrade_to_cpu), + bay_cpu: oj_rc_database::sea_orm::ActiveValue::Set(upgrade_to_cpu as i32), ..Default::default() }; self.db.update_garage_by_user_id_and_slot(entity, self.account.id, selected_slot.slot).await.map_err(|e| { @@ -721,7 +721,7 @@ impl super::User for UserData { tracks_turn_on_spot: oj_rc_database::sea_orm::ActiveValue::Set(controls.tracks_turn_on_spot), ..Default::default() }; - self.save_garage_by_slot(entity, controls.slot as u32).await.map_err(|e| { + self.save_garage_by_slot(entity, controls.slot).await.map_err(|e| { log::error!("Failed to save controls for slot {} for user_id {}: {}", controls.slot, self.account.id, e); DATABASE_ERR })?; @@ -770,7 +770,7 @@ impl super::User for UserData { name: oj_rc_database::sea_orm::ActiveValue::Set(name), ..Default::default() }; - self.db.update_garage_by_user_id_and_slot(to_save, self.account.id, slot as u32).await.map_err(|e| { + self.db.update_garage_by_user_id_and_slot(to_save, self.account.id, slot).await.map_err(|e| { log::error!("Failed to save garage {} for user_id {}: {}", slot, self.account.id, e); DATABASE_ERR })?; @@ -822,7 +822,7 @@ impl super::User for UserData { async fn prepare_factory_upload(&self, vehicle: super::VehicleUploadData) -> Result { self.err_on_banned().await?; - let slot = self.load_garage_by_slot(vehicle.slot as u32).await.map_err(|e| { + let slot = self.load_garage_by_slot(vehicle.slot).await.map_err(|e| { log::error!("Failed to retrieve vehicle slot {} for user_id {} (prepare_factory_upload): {}", vehicle.slot, self.account.id, e); DATABASE_ERR })?.ok_or_else(|| { @@ -835,8 +835,8 @@ impl super::User for UserData { thumbnail: vehicle.thumbnail, added_by: self.account.public_id.clone(), added_by_display_name: self.account.display_name.clone(), - cpu: slot.total_robot_cpu, - total_robot_ranking: slot.total_robot_ranking, + cpu: slot.total_robot_cpu as u32, + total_robot_ranking: slot.total_robot_ranking as u32, build_version: vehicle.version, cube_data: slot.robot_data, colour_data: slot.colour_data, diff --git a/rc_core/src/persist/user/initial_data.rs b/rc_core/src/persist/user/initial_data.rs index a2b2594..4cc47f4 100644 --- a/rc_core/src/persist/user/initial_data.rs +++ b/rc_core/src/persist/user/initial_data.rs @@ -31,7 +31,7 @@ pub async fn setup_new_user(user: &super::UserInfo, db: &oj_rc_database::Databas Ok(()) } -pub async fn register_new_user(info: &super::RegistrationInfo, db: &oj_rc_database::Database) -> Result { +pub async fn register_new_user(info: &super::RegistrationInfo, db: &oj_rc_database::Database) -> Result { let user_data = db.insert_user(default_user_data(info)).await?; db.insert_perms(default_user_perms(user_data.id)).await?; db.insert_user_aux(default_user_aux_data(user_data.id)).await?; @@ -68,7 +68,7 @@ fn default_user_data(info: &super::RegistrationInfo) -> oj_rc_database::schema:: } } -fn default_user_aux_data(user_id: u32) -> Vec { +fn default_user_aux_data(user_id: i32) -> Vec { let current_time = current_unix_time(); vec![ oj_rc_database::schema::user_aux::ActiveModel { @@ -148,7 +148,7 @@ r#"{ ] } -fn default_user_perms(user_id: u32) -> oj_rc_database::schema::permissions::ActiveModel { +fn default_user_perms(user_id: i32) -> oj_rc_database::schema::permissions::ActiveModel { oj_rc_database::schema::permissions::ActiveModel { id: Default::default(), user_id: oj_rc_database::sea_orm::ActiveValue::Set(user_id), @@ -160,7 +160,7 @@ fn default_user_perms(user_id: u32) -> oj_rc_database::schema::permissions::Acti } } -pub fn default_new_slot(user_id: u32, slot: u32, bay_cpu: u32) -> oj_rc_database::schema::garage::ActiveModel { +pub fn default_new_slot(user_id: i32, slot: i32, bay_cpu: i32) -> oj_rc_database::schema::garage::ActiveModel { let current_time = current_unix_time(); oj_rc_database::schema::garage::ActiveModel { id: Default::default(), @@ -227,7 +227,7 @@ pub fn default_reset_slot() -> oj_rc_database::schema::garage::ActiveModel { } } -fn default_garage_slots(user_id: u32) -> Vec { +fn default_garage_slots(user_id: i32) -> Vec { let current_time = current_unix_time(); vec![ oj_rc_database::schema::garage::ActiveModel { diff --git a/rc_core/src/persist/user/traits.rs b/rc_core/src/persist/user/traits.rs index 286327a..c3ad920 100644 --- a/rc_core/src/persist/user/traits.rs +++ b/rc_core/src/persist/user/traits.rs @@ -50,7 +50,7 @@ pub trait UserProvider { pub trait UserAuthenticator { async fn login(&self, info: UserInfo) -> Result; async fn user_exists(&self, user: UserId) -> Result; - async fn register(&self, info: RegistrationInfo) -> Result; + async fn register(&self, info: RegistrationInfo) -> Result; } #[async_trait::async_trait] diff --git a/rc_database/src/migration/m20250424_000001_create_user_table.rs b/rc_database/src/migration/m20250424_000001_create_user_table.rs index c2000bb..fb73850 100644 --- a/rc_database/src/migration/m20250424_000001_create_user_table.rs +++ b/rc_database/src/migration/m20250424_000001_create_user_table.rs @@ -18,7 +18,7 @@ impl MigrationTrait for Migration { .table(crate::schema::user::Entity) .col( ColumnDef::new(crate::schema::user::Column::Id) - .unsigned() + .integer() .not_null() .auto_increment() .primary_key(), diff --git a/rc_database/src/migration/m20250424_000002_create_user_permissions_table.rs b/rc_database/src/migration/m20250424_000002_create_user_permissions_table.rs index aedb585..77cddb7 100644 --- a/rc_database/src/migration/m20250424_000002_create_user_permissions_table.rs +++ b/rc_database/src/migration/m20250424_000002_create_user_permissions_table.rs @@ -18,12 +18,12 @@ impl MigrationTrait for Migration { .table(crate::schema::permissions::Entity) .col( ColumnDef::new(crate::schema::permissions::Column::Id) - .unsigned() + .integer() .not_null() .auto_increment() .primary_key(), ) - .col(ColumnDef::new(crate::schema::permissions::Column::UserId).unsigned().not_null()) + .col(ColumnDef::new(crate::schema::permissions::Column::UserId).integer().not_null()) .foreign_key( ForeignKey::create() .name("fk-permissions-user_id") diff --git a/rc_database/src/migration/m20250424_000003_create_garage_table.rs b/rc_database/src/migration/m20250424_000003_create_garage_table.rs index 23ed84e..87dfa45 100644 --- a/rc_database/src/migration/m20250424_000003_create_garage_table.rs +++ b/rc_database/src/migration/m20250424_000003_create_garage_table.rs @@ -18,12 +18,12 @@ impl MigrationTrait for Migration { .table(crate::schema::garage::Entity) .col( ColumnDef::new(crate::schema::garage::Column::Id) - .unsigned() + .integer() .not_null() .auto_increment() .primary_key(), ) - .col(ColumnDef::new(crate::schema::garage::Column::UserId).unsigned().not_null()) + .col(ColumnDef::new(crate::schema::garage::Column::UserId).integer().not_null()) .foreign_key( ForeignKey::create() .name("fk-garage-user_id") @@ -31,24 +31,24 @@ impl MigrationTrait for Migration { .to(crate::schema::user::Entity, crate::schema::user::Column::Id), ) .col(ColumnDef::new(crate::schema::garage::Column::CreationTime).big_integer().not_null()) - .col(ColumnDef::new(crate::schema::garage::Column::Slot).unsigned().not_null()) + .col(ColumnDef::new(crate::schema::garage::Column::Slot).integer().not_null()) .col(ColumnDef::new(crate::schema::garage::Column::Name).string().not_null()) - .col(ColumnDef::new(crate::schema::garage::Column::CrfId).unsigned()) + .col(ColumnDef::new(crate::schema::garage::Column::CrfId).integer()) .col(ColumnDef::new(crate::schema::garage::Column::WasRated).boolean().not_null()) .col(ColumnDef::new(crate::schema::garage::Column::MovementCategories).string().not_null()) .col(ColumnDef::new(crate::schema::garage::Column::Uuid).big_integer().not_null()) - .col(ColumnDef::new(crate::schema::garage::Column::ThumbnailVersion).unsigned().not_null()) - .col(ColumnDef::new(crate::schema::garage::Column::TotalRobotCpu).unsigned().not_null()) - .col(ColumnDef::new(crate::schema::garage::Column::TotalCosmeticCpu).unsigned().not_null()) - .col(ColumnDef::new(crate::schema::garage::Column::TotalRobotRanking).unsigned().not_null()) - .col(ColumnDef::new(crate::schema::garage::Column::BayCpu).unsigned().not_null()) + .col(ColumnDef::new(crate::schema::garage::Column::ThumbnailVersion).integer().not_null()) + .col(ColumnDef::new(crate::schema::garage::Column::TotalRobotCpu).integer().not_null()) + .col(ColumnDef::new(crate::schema::garage::Column::TotalCosmeticCpu).integer().not_null()) + .col(ColumnDef::new(crate::schema::garage::Column::TotalRobotRanking).integer().not_null()) + .col(ColumnDef::new(crate::schema::garage::Column::BayCpu).integer().not_null()) .col(ColumnDef::new(crate::schema::garage::Column::TutorialRobot).boolean().not_null()) - .col(ColumnDef::new(crate::schema::garage::Column::StarterRobotIndex).unsigned()) - .col(ColumnDef::new(crate::schema::garage::Column::ControlType).tiny_unsigned().not_null()) + .col(ColumnDef::new(crate::schema::garage::Column::StarterRobotIndex).integer()) + .col(ColumnDef::new(crate::schema::garage::Column::ControlType).integer().not_null()) .col(ColumnDef::new(crate::schema::garage::Column::VerticalStrafing).boolean().not_null()) .col(ColumnDef::new(crate::schema::garage::Column::SidewaysDriving).boolean().not_null()) .col(ColumnDef::new(crate::schema::garage::Column::TracksTurnOnSpot).boolean().not_null()) - .col(ColumnDef::new(crate::schema::garage::Column::MasteryLevel).unsigned().not_null()) + .col(ColumnDef::new(crate::schema::garage::Column::MasteryLevel).integer().not_null()) .col(ColumnDef::new(crate::schema::garage::Column::BaySkinId).string().not_null()) .col(ColumnDef::new(crate::schema::garage::Column::WeaponOrder).string().not_null()) .col(ColumnDef::new(crate::schema::garage::Column::RobotData).blob().not_null()) diff --git a/rc_database/src/migration/m20250424_000004_create_user_aux_table.rs b/rc_database/src/migration/m20250424_000004_create_user_aux_table.rs index d06d069..047261e 100644 --- a/rc_database/src/migration/m20250424_000004_create_user_aux_table.rs +++ b/rc_database/src/migration/m20250424_000004_create_user_aux_table.rs @@ -18,12 +18,12 @@ impl MigrationTrait for Migration { .table(crate::schema::user_aux::Entity) .col( ColumnDef::new(crate::schema::user_aux::Column::Id) - .unsigned() + .integer() .not_null() .auto_increment() .primary_key(), ) - .col(ColumnDef::new(crate::schema::user_aux::Column::UserId).unsigned().not_null()) + .col(ColumnDef::new(crate::schema::user_aux::Column::UserId).integer().not_null()) .foreign_key( ForeignKey::create() .name("fk-users_aux-user_id") diff --git a/rc_database/src/migration/m20250424_000005_create_campaign_tables.rs b/rc_database/src/migration/m20250424_000005_create_campaign_tables.rs index b6e6f87..3747eb9 100644 --- a/rc_database/src/migration/m20250424_000005_create_campaign_tables.rs +++ b/rc_database/src/migration/m20250424_000005_create_campaign_tables.rs @@ -18,12 +18,12 @@ impl MigrationTrait for Migration { .table(crate::schema::campaign::Entity) .col( ColumnDef::new(crate::schema::campaign::Column::Id) - .unsigned() + .integer() .not_null() .auto_increment() .primary_key(), ) - .col(ColumnDef::new(crate::schema::campaign::Column::UserId).unsigned().not_null()) + .col(ColumnDef::new(crate::schema::campaign::Column::UserId).integer().not_null()) .foreign_key( ForeignKey::create() .name("fk-campaign-user_id") @@ -41,12 +41,12 @@ impl MigrationTrait for Migration { .table(crate::schema::campaign_difficulty_completion::Entity) .col( ColumnDef::new(crate::schema::campaign_difficulty_completion::Column::Id) - .unsigned() + .integer() .not_null() .auto_increment() .primary_key(), ) - .col(ColumnDef::new(crate::schema::campaign_difficulty_completion::Column::CampaignId).unsigned().not_null()) + .col(ColumnDef::new(crate::schema::campaign_difficulty_completion::Column::CampaignId).integer().not_null()) .foreign_key( ForeignKey::create() .name("fk-campaigns_completion-campaign_id") @@ -54,8 +54,8 @@ impl MigrationTrait for Migration { .to(crate::schema::campaign::Entity, crate::schema::campaign::Column::Id), ) .col(ColumnDef::new(crate::schema::campaign_difficulty_completion::Column::CreationTime).big_integer().not_null()) - .col(ColumnDef::new(crate::schema::campaign_difficulty_completion::Column::Level).unsigned().not_null()) - .col(ColumnDef::new(crate::schema::campaign_difficulty_completion::Column::Wave).unsigned().not_null()) + .col(ColumnDef::new(crate::schema::campaign_difficulty_completion::Column::Level).integer().not_null()) + .col(ColumnDef::new(crate::schema::campaign_difficulty_completion::Column::Wave).integer().not_null()) .col(ColumnDef::new(crate::schema::campaign_difficulty_completion::Column::Complete).boolean().not_null()) .to_owned(), ) diff --git a/rc_database/src/migration/m20250529_000001_create_sanction_table.rs b/rc_database/src/migration/m20250529_000001_create_sanction_table.rs index 57a689b..d21eab6 100644 --- a/rc_database/src/migration/m20250529_000001_create_sanction_table.rs +++ b/rc_database/src/migration/m20250529_000001_create_sanction_table.rs @@ -18,12 +18,12 @@ impl MigrationTrait for Migration { .table(crate::schema::sanction::Entity) .col( ColumnDef::new(crate::schema::sanction::Column::Id) - .unsigned() + .integer() .not_null() .auto_increment() .primary_key(), ) - .col(ColumnDef::new(crate::schema::sanction::Column::UserId).unsigned().not_null()) + .col(ColumnDef::new(crate::schema::sanction::Column::UserId).integer().not_null()) .foreign_key( ForeignKey::create() .name("fk-sanction-user_id") @@ -31,7 +31,7 @@ impl MigrationTrait for Migration { .to(crate::schema::user::Entity, crate::schema::user::Column::Id), ) .col(ColumnDef::new(crate::schema::sanction::Column::CreationTime).big_integer().not_null()) - .col(ColumnDef::new(crate::schema::sanction::Column::IssuerId).unsigned().not_null()) + .col(ColumnDef::new(crate::schema::sanction::Column::IssuerId).integer().not_null()) .foreign_key( ForeignKey::create() .name("fk-sanction-issuer_id") @@ -43,7 +43,7 @@ impl MigrationTrait for Migration { .col(ColumnDef::new(crate::schema::sanction::Column::Reason).string().not_null()) .col(ColumnDef::new(crate::schema::sanction::Column::Duration).big_integer()) .col(ColumnDef::new(crate::schema::sanction::Column::Acknowledged).big_integer()) - .col(ColumnDef::new(crate::schema::sanction::Column::AppealerId).unsigned()) + .col(ColumnDef::new(crate::schema::sanction::Column::AppealerId).integer()) .foreign_key( ForeignKey::create() .name("fk-sanction-appealer_id") diff --git a/rc_database/src/schema/campaign.rs b/rc_database/src/schema/campaign.rs index 777aaf5..1489f05 100644 --- a/rc_database/src/schema/campaign.rs +++ b/rc_database/src/schema/campaign.rs @@ -4,8 +4,8 @@ use sea_orm::entity::prelude::*; #[sea_orm(table_name = "campaigns")] pub struct Model { #[sea_orm(primary_key)] - pub id: u32, - pub user_id: u32, + pub id: i32, + pub user_id: i32, pub creation_time: i64, // seconds since unix epoch pub campaign_id: String, } diff --git a/rc_database/src/schema/campaign_difficulty_completion.rs b/rc_database/src/schema/campaign_difficulty_completion.rs index 82a9655..4551beb 100644 --- a/rc_database/src/schema/campaign_difficulty_completion.rs +++ b/rc_database/src/schema/campaign_difficulty_completion.rs @@ -4,11 +4,11 @@ use sea_orm::entity::prelude::*; #[sea_orm(table_name = "campaigns_completion")] pub struct Model { #[sea_orm(primary_key)] - pub id: u32, - pub campaign_id: u32, + pub id: i32, + pub campaign_id: i32, pub creation_time: i64, // seconds since unix epoch - pub level: u32, - pub wave: u32, + pub level: i32, + pub wave: i32, pub complete: bool, } diff --git a/rc_database/src/schema/common_query.rs b/rc_database/src/schema/common_query.rs index 9982dff..983811a 100644 --- a/rc_database/src/schema/common_query.rs +++ b/rc_database/src/schema/common_query.rs @@ -2,7 +2,7 @@ use sea_orm::FromQueryResult; #[derive(FromQueryResult)] pub struct Id { - pub id: u32, + pub id: i32, } #[derive(FromQueryResult)] diff --git a/rc_database/src/schema/garage.rs b/rc_database/src/schema/garage.rs index c803e43..3fe70db 100644 --- a/rc_database/src/schema/garage.rs +++ b/rc_database/src/schema/garage.rs @@ -4,29 +4,29 @@ use sea_orm::entity::prelude::*; #[sea_orm(table_name = "garages")] pub struct Model { #[sea_orm(primary_key)] - pub id: u32, - pub user_id: u32, + pub id: i32, + pub user_id: i32, pub creation_time: i64, // seconds since unix epoch - pub slot: u32, + pub slot: i32, pub name: String, - pub crf_id: Option, + pub crf_id: Option, pub was_rated: bool, pub movement_categories: String, // csv? pub uuid: i64, - pub thumbnail_version: u32, - pub total_robot_cpu: u32, - pub total_cosmetic_cpu: u32, - pub total_robot_ranking: u32, - pub bay_cpu: u32, + pub thumbnail_version: i32, + pub total_robot_cpu: i32, + pub total_cosmetic_cpu: i32, + pub total_robot_ranking: i32, + pub bay_cpu: i32, pub tutorial_robot: bool, - pub starter_robot_index: Option, + pub starter_robot_index: Option, pub control_type: ControlType, // control options pub vertical_strafing: bool, pub sideways_driving: bool, pub tracks_turn_on_spot: bool, // end control options - pub mastery_level: u32, + pub mastery_level: i32, pub bay_skin_id: String, pub death_animation_id: String, pub spawn_animation_id: String, @@ -64,9 +64,9 @@ impl Related for Entity { impl ActiveModelBehavior for ActiveModel {} -#[repr(u8)] +#[repr(i32)] #[derive(Clone, Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)] -#[sea_orm(rs_type = "u8", db_type = "TinyInteger")] +#[sea_orm(rs_type = "i32", db_type = "Integer")] pub enum ControlType { Camera = 0, Keyboard = 1, diff --git a/rc_database/src/schema/permissions.rs b/rc_database/src/schema/permissions.rs index 0d7941b..4ff8c77 100644 --- a/rc_database/src/schema/permissions.rs +++ b/rc_database/src/schema/permissions.rs @@ -4,8 +4,8 @@ use sea_orm::entity::prelude::*; #[sea_orm(table_name = "permissions")] pub struct Model { #[sea_orm(primary_key)] - pub id: u32, - pub user_id: u32, + pub id: i32, + pub user_id: i32, pub moderator: bool, pub administrator: bool, pub developer: bool, diff --git a/rc_database/src/schema/sanction.rs b/rc_database/src/schema/sanction.rs index b4fc77f..1683206 100644 --- a/rc_database/src/schema/sanction.rs +++ b/rc_database/src/schema/sanction.rs @@ -4,16 +4,16 @@ use sea_orm::entity::prelude::*; #[sea_orm(table_name = "sanctions")] pub struct Model { #[sea_orm(primary_key)] - pub id: u32, - pub user_id: u32, + pub id: i32, + pub user_id: i32, pub creation_time: i64, // seconds since unix epoch - pub issuer_id: u32, + pub issuer_id: i32, pub issuer_name: String, pub descriptor: Descriptor, pub reason: String, pub duration: Option, // seconds after creation_time (null means permanent or irrelevant) pub acknowledged: Option, // seconds since unix epoch - pub appealer_id: Option, // moderator who approved appeal + pub appealer_id: Option, // moderator who approved appeal pub appeal_time: Option, // seconds since unix epoch } diff --git a/rc_database/src/schema/user.rs b/rc_database/src/schema/user.rs index 996f9ba..80ddf3c 100644 --- a/rc_database/src/schema/user.rs +++ b/rc_database/src/schema/user.rs @@ -4,7 +4,7 @@ use sea_orm::entity::prelude::*; #[sea_orm(table_name = "users")] pub struct Model { #[sea_orm(primary_key)] - pub id: u32, + pub id: i32, pub creation_time: i64, // seconds since unix epoch pub public_id: String, pub display_name: String, diff --git a/rc_database/src/schema/user_aux.rs b/rc_database/src/schema/user_aux.rs index 4bea447..e94cc6b 100644 --- a/rc_database/src/schema/user_aux.rs +++ b/rc_database/src/schema/user_aux.rs @@ -4,8 +4,8 @@ use sea_orm::entity::prelude::*; #[sea_orm(table_name = "users_aux")] pub struct Model { #[sea_orm(primary_key)] - pub id: u32, - pub user_id: u32, + pub id: i32, + pub user_id: i32, pub creation_time: i64, // seconds since unix epoch pub descriptor: Descriptor, pub data: String, // usually JSON diff --git a/rc_database/src/wrapper.rs b/rc_database/src/wrapper.rs index eb2ee41..14dc167 100644 --- a/rc_database/src/wrapper.rs +++ b/rc_database/src/wrapper.rs @@ -54,14 +54,14 @@ impl Database { entity.insert(&self.orm).await } - pub async fn user_aux_by_user_id(&self, user_id: u32) -> Result, sea_orm::DbErr> { + pub async fn user_aux_by_user_id(&self, user_id: i32) -> Result, sea_orm::DbErr> { crate::schema::user_aux::Entity::find() .filter(crate::schema::user_aux::Column::UserId.eq(user_id)) .all(&self.orm) .await } - pub async fn user_aux_by_user_id_and_descriptor(&self, user_id: u32, descriptor: crate::schema::user_aux::Descriptor) -> Result, sea_orm::DbErr> { + pub async fn user_aux_by_user_id_and_descriptor(&self, user_id: i32, descriptor: crate::schema::user_aux::Descriptor) -> Result, sea_orm::DbErr> { crate::schema::user_aux::Entity::find() .filter(crate::schema::user_aux::Column::UserId.eq(user_id)) .filter(crate::schema::user_aux::Column::Descriptor.eq(descriptor)) @@ -74,7 +74,7 @@ impl Database { Ok(()) } - pub async fn update_user_aux_by_user_id_and_descriptor(&self, mut entity: crate::schema::user_aux::ActiveModel, user_id: u32, descriptor: crate::schema::user_aux::Descriptor) -> Result, sea_orm::DbErr> { + pub async fn update_user_aux_by_user_id_and_descriptor(&self, mut entity: crate::schema::user_aux::ActiveModel, user_id: i32, descriptor: crate::schema::user_aux::Descriptor) -> Result, sea_orm::DbErr> { let id_opt = crate::schema::user_aux::Entity::find() .select_only() .column(crate::schema::user_aux::Column::Id) @@ -94,7 +94,7 @@ impl Database { } } - pub async fn perms_by_user_id(&self, user_id: u32) -> Result, sea_orm::DbErr> { + pub async fn perms_by_user_id(&self, user_id: i32) -> Result, sea_orm::DbErr> { crate::schema::permissions::Entity::find() .filter(crate::schema::permissions::Column::UserId.eq(user_id)) .one(&self.orm) @@ -105,7 +105,7 @@ impl Database { entity.insert(&self.orm).await } - pub async fn update_perms_by_user_id(&self, mut entity: crate::schema::permissions::ActiveModel, user_id: u32) -> Result, sea_orm::DbErr> { + pub async fn update_perms_by_user_id(&self, mut entity: crate::schema::permissions::ActiveModel, user_id: i32) -> Result, sea_orm::DbErr> { let id_opt = crate::schema::permissions::Entity::find() .select_only() .column(crate::schema::permissions::Column::Id) @@ -123,18 +123,18 @@ impl Database { } } - pub async fn garage_max_slot_by_user_id(&self, user_id: u32) -> Result { + pub async fn garage_max_slot_by_user_id(&self, user_id: i32) -> Result { let result = crate::schema::garage::Entity::find() .select_only() .column_as(crate::schema::garage::Column::Slot.max(), "column") .filter(crate::schema::garage::Column::UserId.eq(user_id)) - .into_model::>() + .into_model::>() .one(&self.orm) .await?; Ok(result.map(|x| *x).unwrap_or(0)) } - pub async fn garage_selected(&self, user_id: u32) -> Result, sea_orm::DbErr> { + pub async fn garage_selected(&self, user_id: i32) -> Result, sea_orm::DbErr> { crate::schema::garage::Entity::find() .filter(crate::schema::garage::Column::UserId.eq(user_id)) .filter(crate::schema::garage::Column::Selected.eq(true)) @@ -142,7 +142,7 @@ impl Database { .await } - pub async fn garage_by_user_id_and_slot(&self, user_id: u32, garage_slot: u32) -> Result, sea_orm::DbErr> { + pub async fn garage_by_user_id_and_slot(&self, user_id: i32, garage_slot: i32) -> Result, sea_orm::DbErr> { crate::schema::garage::Entity::find() .filter(crate::schema::garage::Column::UserId.eq(user_id)) .filter(crate::schema::garage::Column::Slot.eq(garage_slot)) @@ -150,7 +150,7 @@ impl Database { .await } - pub async fn garages_by_user_id(&self, user_id: u32) -> Result, sea_orm::DbErr> { + pub async fn garages_by_user_id(&self, user_id: i32) -> Result, sea_orm::DbErr> { crate::schema::garage::Entity::find() .filter(crate::schema::garage::Column::UserId.eq(user_id)) .order_by_asc(crate::schema::garage::Column::Slot) @@ -165,7 +165,7 @@ impl Database { .await } - pub async fn garage_by_id(&self, id: u32) -> Result, sea_orm::DbErr> { + pub async fn garage_by_id(&self, id: i32) -> Result, sea_orm::DbErr> { crate::schema::garage::Entity::find_by_id(id) .one(&self.orm) .await @@ -186,7 +186,7 @@ impl Database { .await } - pub async fn update_garage_by_user_id_and_slot(&self, mut entity: crate::schema::garage::ActiveModel, user_id: u32, slot: u32) -> Result, sea_orm::DbErr> { + pub async fn update_garage_by_user_id_and_slot(&self, mut entity: crate::schema::garage::ActiveModel, user_id: i32, slot: i32) -> Result, sea_orm::DbErr> { let id_opt = crate::schema::garage::Entity::find() .select_only() .column(crate::schema::garage::Column::Id) @@ -223,7 +223,7 @@ impl Database { } } - pub async fn update_garage_selected_by_user_id_and_slot(&self, user_id: u32, slot: u32) -> Result<(), sea_orm::DbErr> { + pub async fn update_garage_selected_by_user_id_and_slot(&self, user_id: i32, slot: i32) -> Result<(), sea_orm::DbErr> { self.orm.transaction(|txn| { Box::pin(async move { crate::schema::garage::Entity::update_many() @@ -251,7 +251,7 @@ impl Database { Ok(()) } - pub async fn count_sanctions_to_ack_by_user_id_and_descriptor(&self, user_id: u32, desc: crate::schema::sanction::Descriptor) -> Result { + pub async fn count_sanctions_to_ack_by_user_id_and_descriptor(&self, user_id: i32, desc: crate::schema::sanction::Descriptor) -> Result { crate::schema::sanction::Entity::find() .filter(crate::schema::sanction::Column::UserId.eq(user_id)) .filter(crate::schema::sanction::Column::Descriptor.eq(desc)) @@ -260,7 +260,7 @@ impl Database { .await } - pub async fn sanctions_by_user_id(&self, user_id: u32) -> Result, sea_orm::DbErr> { + pub async fn sanctions_by_user_id(&self, user_id: i32) -> Result, sea_orm::DbErr> { crate::schema::sanction::Entity::find() .filter(crate::schema::sanction::Column::UserId.eq(user_id)) .filter(crate::schema::sanction::Column::Acknowledged.is_null())