76 lines
2.3 KiB
Rust
76 lines
2.3 KiB
Rust
use crate::entities::*;
|
|
|
|
// TODO: should any of these be options? as in, what does failure look like
|
|
// TODO: determine best way to design this, current path will lead to 8493024039280x functions (probably?)
|
|
pub trait DataAccess {
|
|
fn get_user_by_id(&self, _id: u32) -> Option<UserAccount> {
|
|
unimplemented!();
|
|
}
|
|
|
|
fn get_user_by_name(&self, _username: String) -> Option<UserAccount> {
|
|
unimplemented!();
|
|
}
|
|
|
|
fn get_user_settings_by_user(&self, _user: &UserAccount) -> Option<UserSettings> {
|
|
unimplemented!();
|
|
}
|
|
|
|
fn create_user_settings_by_user(&self, _user: &UserAccount) -> UserSettings {
|
|
unimplemented!();
|
|
}
|
|
|
|
fn get_characters_by_user(&self, _user: &UserAccount) -> [Option<Character>; 4] {
|
|
unimplemented!();
|
|
}
|
|
|
|
fn get_guild_card_data_by_user(&self, _user: &UserAccount) -> GuildCardData {
|
|
unimplemented!();
|
|
}
|
|
}
|
|
|
|
/*#[derive(Clone)]
|
|
pub struct DBAccess {
|
|
connection_pool: ConnectionPool,
|
|
}
|
|
|
|
impl DBAccess {
|
|
pub fn new(pool: ConnectionPool) -> DBAccess {
|
|
DBAccess {
|
|
connection_pool: pool,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl DataAccess for DBAccess {
|
|
fn get_user_by_name(&self, name: String) -> Option<UserAccount> {
|
|
use elseware::schema::user_accounts::dsl::{user_accounts, username};
|
|
self.connection_pool.get()
|
|
.map(|conn| {
|
|
user_accounts.filter(username.eq(name)).load::<UserAccount>(&conn)
|
|
.map(|mut user| user.pop()).unwrap_or(None)
|
|
})
|
|
.unwrap_or(None)
|
|
}
|
|
|
|
fn get_user_settings_by_user(&self, user: &UserAccount) -> Option<UserSettings> {
|
|
self.connection_pool.get()
|
|
.ok()
|
|
.and_then(|conn| {
|
|
UserSettings::belonging_to(user).first::<UserSettings>(&conn).ok()
|
|
})
|
|
}
|
|
|
|
fn create_user_settings_by_user(&self, user: &UserAccount) -> UserSettings {
|
|
use elseware::schema::user_settings::dsl::user_settings;
|
|
self.connection_pool.get()
|
|
.map(|conn| {
|
|
let new_settings = NewUserSettings {
|
|
user_id: user.id,
|
|
settings: EUserSettings(settings::UserSettings::default())
|
|
};
|
|
diesel::insert_into(user_settings).values(&new_settings).get_result(&conn).unwrap()
|
|
}).unwrap()
|
|
}
|
|
}
|
|
*/
|