diff --git a/src/bin/admin.rs b/src/bin/admin.rs index 326d003..307ad5a 100644 --- a/src/bin/admin.rs +++ b/src/bin/admin.rs @@ -46,7 +46,7 @@ pub enum AdminCommand { async fn handle_create_user(db_url: &str, new_user: NewUser) -> Result<()> { let mut db = establish_connection(db_url); - let user = users::Query::new(&mut db).create(new_user)?; + let user = users::q::create(&mut db, new_user)?; println!("User created successfully with id = {}", user.id); Ok(()) @@ -55,7 +55,7 @@ async fn handle_create_user(db_url: &str, new_user: NewUser) -> Result<()> { async fn handle_list_users(db_url: &str) -> Result<()> { let mut db = establish_connection(db_url); - let users = users::Query::new(&mut db).all()?; + let users = users::q::all(&mut db)?; println!("Found {} users.", users.len()); for user in users { diff --git a/src/handler/documents.rs b/src/handler/documents.rs index e717d27..876fb46 100644 --- a/src/handler/documents.rs +++ b/src/handler/documents.rs @@ -98,7 +98,7 @@ pub async fn create_document_submit( "".to_owned(), ); - let document = documents::query::create(&mut db, new_document).map_err(internal_error)?; + let document = documents::q::create(&mut db, new_document).map_err(internal_error)?; info!(?document, "document created"); Ok(Redirect::to("/documents").into_response()) @@ -128,7 +128,7 @@ pub async fn edit_document_page( return Err((StatusCode::FORBIDDEN, "permission denied".to_owned())); } - let document = documents::query::by_id(&mut db, &id.to_string()).map_err(internal_error)?; + let document = documents::q::by_id(&mut db, &id.to_string()).map_err(internal_error)?; let projects = permissions::query::accessible_projects(&mut db, &user.id).map_err(internal_error)?; @@ -172,7 +172,7 @@ pub async fn edit_document_submit( return Err((StatusCode::FORBIDDEN, "permission denied".to_owned())); } - documents::query::update( + documents::q::update( &mut db, &document_id.to_string(), form.title.to_owned(), diff --git a/src/handler/projects.rs b/src/handler/projects.rs index bfbd554..0768cbe 100644 --- a/src/handler/projects.rs +++ b/src/handler/projects.rs @@ -78,9 +78,9 @@ pub async fn create_project_submit( ); // TODO: validation - let project = projects::query::create(&mut db, new_project).map_err(internal_error)?; + let project = projects::q::create(&mut db, new_project).map_err(internal_error)?; - let _ = project_memberships::query::create(&mut db, &user.id, &project.id, ProjectRole::Admin) + let _ = project_memberships::q::create(&mut db, &user.id, &project.id, ProjectRole::Admin) .map_err(internal_error)?; Ok(Redirect::to("/projects").into_response()) diff --git a/src/models.rs b/src/models.rs index b7f9c23..a707258 100644 --- a/src/models.rs +++ b/src/models.rs @@ -3,7 +3,6 @@ use thiserror::Error; pub mod documents; pub mod project_memberships; pub mod projects; -pub mod types; pub mod users; #[derive(Error, Debug)] diff --git a/src/models/documents.rs b/src/models/documents.rs index 2881056..0067275 100644 --- a/src/models/documents.rs +++ b/src/models/documents.rs @@ -38,41 +38,41 @@ impl NewDocument { } } -pub mod query { +pub mod q { use super::*; pub fn create( - db: &mut SqliteConnection, + conn: &mut SqliteConnection, new_document: NewDocument, ) -> Result { - diesel::insert_into(dsl::documents).values(&new_document).execute(db)?; + diesel::insert_into(dsl::documents).values(&new_document).execute(conn)?; - let document = dsl::documents.filter(dsl::id.eq(&new_document.id)).first(db)?; + let document = dsl::documents.filter(dsl::id.eq(&new_document.id)).first(conn)?; Ok(document) } pub fn update( - db: &mut SqliteConnection, + conn: &mut SqliteConnection, document_id: &str, title: String, content: String, ) -> Result { diesel::update(dsl::documents.filter(dsl::id.eq(document_id))) .set((dsl::title.eq(title), dsl::content.eq(content))) - .execute(db)?; + .execute(conn)?; - let document = dsl::documents.filter(dsl::id.eq(document_id)).first(db)?; + let document = dsl::documents.filter(dsl::id.eq(document_id)).first(conn)?; Ok(document) } pub fn by_id( - db: &mut SqliteConnection, + conn: &mut SqliteConnection, document_id: &str, ) -> Result, DbError> { let document = - dsl::documents.filter(dsl::id.eq(document_id)).first::(db).optional()?; + dsl::documents.filter(dsl::id.eq(document_id)).first::(conn).optional()?; Ok(document) } diff --git a/src/models/project_memberships.rs b/src/models/project_memberships.rs index c60bf46..dc7388f 100644 --- a/src/models/project_memberships.rs +++ b/src/models/project_memberships.rs @@ -65,13 +65,13 @@ pub struct NewProjectMembership { pub role: ProjectRole, } -pub mod query { +pub mod q { use diesel::SqliteConnection; use super::*; pub fn create( - db: &mut SqliteConnection, + conn: &mut SqliteConnection, user_id: &str, project_id: &str, role: ProjectRole, @@ -85,7 +85,7 @@ pub mod query { }; let membership = - diesel::insert_into(pm::project_memberships).values(new_membership).get_result(db)?; + diesel::insert_into(pm::project_memberships).values(new_membership).get_result(conn)?; Ok(membership) } diff --git a/src/models/projects.rs b/src/models/projects.rs index 50cfb88..0db87c2 100644 --- a/src/models/projects.rs +++ b/src/models/projects.rs @@ -32,22 +32,22 @@ impl NewProject { } } -pub mod query { +pub mod q { use super::*; - pub fn for_user(db: &mut SqliteConnection, user_id: String) -> Result, DbError> { + pub fn for_user(conn: &mut SqliteConnection, user_id: String) -> Result, DbError> { let projects = - dsl::projects.filter(dsl::creator_id.eq(user_id.to_string())).load::(db)?; + dsl::projects.filter(dsl::creator_id.eq(user_id.to_string())).load::(conn)?; Ok(projects) } pub fn create( - db: &mut SqliteConnection, + conn: &mut SqliteConnection, new_project: NewProject, ) -> Result { use crate::schema::projects::dsl as p; - let project = diesel::insert_into(p::projects).values(new_project).get_result(db)?; + let project = diesel::insert_into(p::projects).values(new_project).get_result(conn)?; Ok(project) } diff --git a/src/models/types.rs b/src/models/types.rs deleted file mode 100644 index 8b13789..0000000 --- a/src/models/types.rs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/models/users.rs b/src/models/users.rs index a16704e..eeb1aee 100644 --- a/src/models/users.rs +++ b/src/models/users.rs @@ -57,33 +57,28 @@ impl NewUser { } } -pub struct Query<'a> { - db: &'a mut SqliteConnection, -} -impl<'a> Query<'a> { - pub fn new(db: &'a mut SqliteConnection) -> Self { - Self { db } - } +pub mod q { + use super::*; - pub fn all(&mut self) -> Result, DbError> { - let user_list = dsl::users.load::(self.db)?; + pub fn all(conn: &mut SqliteConnection) -> Result, DbError> { + let user_list = dsl::users.load::(conn)?; Ok(user_list) } - pub fn by_id(&mut self, id: &str) -> Result { - let user = dsl::users.filter(dsl::id.eq(id)).first::(self.db)?; + pub fn by_id(conn: &mut SqliteConnection, id: &str) -> Result { + let user = dsl::users.filter(dsl::id.eq(id)).first::(conn)?; Ok(user) } - pub fn by_username(&mut self, username: &str) -> Result { - let user = dsl::users.filter(dsl::username.eq(username)).first::(self.db)?; + pub fn by_username(conn: &mut SqliteConnection, username: &str) -> Result { + let user = dsl::users.filter(dsl::username.eq(username)).first::(conn)?; Ok(user) } - pub fn create(&mut self, new_user: NewUser) -> Result { - let _ = diesel::insert_into(dsl::users).values(&new_user).execute(self.db)?; + pub fn create(conn: &mut SqliteConnection, new_user: NewUser) -> Result { + let _ = diesel::insert_into(dsl::users).values(&new_user).execute(conn)?; - let new_user = dsl::users.filter(dsl::id.eq(&new_user.id)).first::(self.db)?; + let new_user = dsl::users.filter(dsl::id.eq(&new_user.id)).first::(conn)?; Ok(new_user) } diff --git a/src/session.rs b/src/session.rs index 05c42f0..197cb84 100644 --- a/src/session.rs +++ b/src/session.rs @@ -34,9 +34,7 @@ impl AuthnBackend for Provider { creds: Self::Credentials, ) -> Result, Self::Error> { let mut db = self.db_pool.get()?; - let mut q = users::Query::new(&mut db); - - let user = q.by_username(&creds.username)?; + let user = users::q::by_username(&mut db, &creds.username)?; if password::verify(&user.password_hash, &creds.password) { Ok(Some(user)) @@ -47,9 +45,7 @@ impl AuthnBackend for Provider { async fn get_user(&self, user_id: &UserId) -> Result, Self::Error> { let mut db = self.db_pool.get()?; - let mut q = users::Query::new(&mut db); - - let user = q.by_id(user_id)?; + let user = users::q::by_id(&mut db, user_id)?; Ok(Some(user)) }