use crate::entity::account::*;
use crate::entity::character::*;
use crate::entity::item::*;

use libpso::item;

pub trait EntityGateway {
    fn get_user_by_id(&self, _id: UserAccountId) -> Option<UserAccountEntity> {
        unimplemented!();
    }

    fn get_user_by_name(&self, _username: String) -> Option<UserAccountEntity> {
        unimplemented!();
    }

    fn set_user(&mut self, _user: &UserAccountEntity) {
        unimplemented!();
    }

    fn get_user_settings_by_user(&self, _user: &UserAccountEntity) -> Option<UserSettingsEntity> {
        unimplemented!();
    }

    fn create_user_settings_by_user(&self, _user: &UserAccountEntity) -> UserSettingsEntity {
        unimplemented!();
    }

    fn get_characters_by_user(&self, _user: &UserAccountEntity) -> [Option<CharacterEntity>; 4] {
        unimplemented!();
    }

    fn set_character(&mut self, _char: &CharacterEntity) {
        unimplemented!();
    }

    fn new_character_by_user(&mut self, _user: &UserAccountEntity) -> CharacterEntity {
        unimplemented!();
    }

    fn get_guild_card_data_by_user(&self, _user: &UserAccountEntity) -> GuildCardDataEntity {
        unimplemented!();
    }

    fn new_item(&mut self, _item: ItemDetail, _location: ItemLocation) -> ItemEntity {
        unimplemented!();
    }

    fn set_item(&self, _item: &ItemEntity) {
        unimplemented!();
    }

    fn get_items_by_character(&self, _char: &CharacterEntity) -> Vec<ItemEntity> {
        unimplemented!();
    }
}