use thiserror::Error; use crate::entity::account::*; use crate::entity::character::*; use crate::entity::item::*; // TODO: better granularity? //#[derive(Error, Debug)] #[derive(Error, Debug)] #[error("")] pub enum GatewayError { Error, PgError(#[from] sqlx::Error) } #[async_trait::async_trait] pub trait EntityGateway: Send + Sync + Clone { async fn create_user(&mut self, _user: NewUserAccountEntity) -> Result { unimplemented!() } async fn get_user_by_id(&self, _id: UserAccountId) -> Result { unimplemented!(); } async fn get_user_by_name(&self, _username: String) -> Result { unimplemented!(); } async fn save_user(&mut self, _user: &UserAccountEntity) -> Result<(), GatewayError> { unimplemented!(); } async fn create_user_settings(&mut self, _settings: NewUserSettingsEntity) -> Result { unimplemented!(); } async fn get_user_settings_by_user(&self, _user: &UserAccountEntity) -> Result { unimplemented!(); } async fn save_user_settings(&mut self, _settings: &UserSettingsEntity) -> Result<(), GatewayError> { unimplemented!(); } async fn create_character(&mut self, _char: NewCharacterEntity) -> Result { unimplemented!(); } // TODO: just make this a vec sorted by slot order? async fn get_characters_by_user(&self, _user: &UserAccountEntity) -> Result<[Option; 4], GatewayError> { unimplemented!(); } async fn save_character(&mut self, _char: &CharacterEntity) -> Result<(), GatewayError> { unimplemented!(); } async fn get_guild_card_data_by_user(&self, _user: &UserAccountEntity) -> Result { unimplemented!(); } async fn create_item(&mut self, _item: NewItemEntity) -> Result { unimplemented!(); } async fn add_item_note(&mut self, _item_id: &ItemEntityId, _item_note: ItemNote) -> Result<(), GatewayError> { unimplemented!(); } async fn feed_mag(&mut self, _mag_item_id: &ItemEntityId, _tool_item_id: &ItemEntityId) -> Result<(), GatewayError> { unimplemented!(); } async fn change_mag_owner(&mut self, _mag_item_id: &ItemEntityId, _character: &CharacterEntity) -> Result<(), GatewayError> { unimplemented!(); } async fn use_mag_cell(&mut self, _mag_item_id: &ItemEntityId, _mag_cell_id: &ItemEntityId) -> Result<(), GatewayError> { unimplemented!(); } async fn add_weapon_modifier(&mut self, _item_id: &ItemEntityId, _modifier: weapon::WeaponModifier) -> Result<(), GatewayError> { unimplemented!(); } async fn add_unit_modifier(&mut self, _item_id: &ItemEntityId, _modifier: unit::UnitModifier) -> Result<(), GatewayError> { unimplemented!(); } /* async fn get_items_by_character(&self, _char_id: &CharacterEntityId) -> Result, GatewayError> { unimplemented!(); } */ async fn get_character_inventory(&mut self, _char_id: &CharacterEntityId) -> Result { unimplemented!(); } async fn get_character_bank(&mut self, _char_id: &CharacterEntityId, _bank_name: BankName) -> Result { unimplemented!(); } async fn set_character_inventory(&mut self, _char_id: &CharacterEntityId, _inventory: &InventoryEntity) -> Result<(), GatewayError> { unimplemented!(); } async fn set_character_bank(&mut self, _char_id: &CharacterEntityId, _inventory: &BankEntity, _bank_name: BankName) -> Result<(), GatewayError> { unimplemented!(); } async fn get_character_equips(&mut self, _char_id: &CharacterEntityId) -> Result { unimplemented!(); } async fn set_character_equips(&mut self, _char_id: &CharacterEntityId, _equips: &EquippedEntity) -> Result<(), GatewayError> { unimplemented!(); } async fn get_character_meseta(&mut self, _char_id: &CharacterEntityId) -> Result { unimplemented!(); } async fn set_character_meseta(&mut self, _char_id: &CharacterEntityId, _amount: Meseta) -> Result<(), GatewayError> { unimplemented!(); } async fn get_bank_meseta(&mut self, _char_id: &CharacterEntityId, _bank: BankName) -> Result { unimplemented!(); } async fn set_bank_meseta(&mut self, _char_id: &CharacterEntityId, _bank: BankName, _amount: Meseta) -> Result<(), GatewayError> { unimplemented!(); } }