more data access functions
This commit is contained in:
parent
6332ea66d9
commit
30c97ce732
@ -1,17 +1,28 @@
|
|||||||
|
use std::default::Default;
|
||||||
|
|
||||||
use diesel::r2d2;
|
use diesel::r2d2;
|
||||||
use diesel::prelude::*;
|
use diesel::prelude::*;
|
||||||
use diesel::pg::PgConnection;
|
use diesel::pg::PgConnection;
|
||||||
|
|
||||||
|
use libpso::character::settings;
|
||||||
use crate::models::*;
|
use crate::models::*;
|
||||||
|
|
||||||
type ConnectionPool = r2d2::Pool<r2d2::ConnectionManager<PgConnection>>;
|
type ConnectionPool = r2d2::Pool<r2d2::ConnectionManager<PgConnection>>;
|
||||||
|
|
||||||
pub trait DataAccess {
|
pub trait DataAccess {
|
||||||
fn get_user_by_id(&self, id: u32) -> Option<UserAccount> {
|
fn get_user_by_id(&self, _id: u32) -> Option<UserAccount> {
|
||||||
unimplemented!();
|
unimplemented!();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_user_by_name(&self, username: String) -> Option<UserAccount> {
|
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!();
|
unimplemented!();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -40,9 +51,24 @@ impl DataAccess for DBAccess {
|
|||||||
})
|
})
|
||||||
.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 {
|
||||||
/*impl DataAccess for DatabaseAccess {
|
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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user