diff options
Diffstat (limited to 'src/db.rs')
-rw-r--r-- | src/db.rs | 24 |
1 files changed, 20 insertions, 4 deletions
@@ -1,15 +1,14 @@ use crate::error::Error; use crate::models; -use base64; +use diesel::dsl::select; +use diesel::dsl::exists; use diesel::connection::Connection; use diesel::pg::PgConnection; use diesel::ExpressionMethods; use diesel::QueryDsl; use diesel::RunQueryDsl; -use rand; -use rand::Rng; -pub const COST: u32 = 12; +pub const COST: u32 = 10; pub fn create_config(conn: &PgConnection, config: &models::Config) -> Result<(), Error> { use crate::schema::config; @@ -24,6 +23,12 @@ pub fn create_config(conn: &PgConnection, config: &models::Config) -> Result<(), }) } +pub fn get_config(conn: &PgConnection) -> Result<models::Config, Error> { + use crate::schema::config; + config::table.get_result::<models::Config>(conn) + .map_err(From::from) +} + pub fn adduser(conn: &PgConnection, username: &str, password: &str) -> Result<(), Error> { use crate::schema::users; @@ -54,3 +59,14 @@ pub fn authenticate( Err(Error::NotFound) } } + +pub fn user_exists( + conn: &PgConnection, + username: &str) -> Result<bool, Error> { + use crate::schema::users; + + let result = select(exists(users::table.filter(users::username.eq(username)))) + .get_result(conn) + .map_err(|err| err)?; + Ok(result) +} |