use super::models::{NewUser, User}; use crate::diesel::QueryDsl; use crate::diesel::RunQueryDsl; use crate::handlers::InputUser; use crate::Pool; use diesel::{delete, insert_into}; type DbResult = Result; pub fn get_all_users(db: &Pool) -> DbResult { use super::schema::users::dsl::*; let conn = db.get().unwrap(); let items = users.load::(&conn)?; Ok(items) } pub fn get_user_by_id(db: &Pool, id: i32) -> DbResult { use super::schema::users::dsl::*; let conn = db.get().unwrap(); users.find(id).get_result::(&conn) } pub fn add_user(db: &Pool, user: InputUser) -> DbResult { use super::schema::users::dsl::*; let conn = db.get().unwrap(); let new_user = NewUser { first_name: &user.first_name, last_name: &user.last_name, email: &user.email, created_at: chrono::Local::now().naive_local(), }; insert_into(users).values(&new_user).get_result(&conn) } pub fn delete_user(db: &Pool, id: i32) -> DbResult { use super::schema::users::dsl::*; let conn = db.get().unwrap(); delete(users.find(id)).execute(&conn) }