use diesel; use diesel::prelude::*; use schema::users; use utils; #[derive(AsChangeset, Clone, FromForm, Identifiable, Serialize, Queryable)] pub struct User { pub id: i32, pub username: String, pub realname: Option, pub email: Option, pub password: String } #[derive(Default, FromForm, Insertable)] #[table_name="users"] pub struct NewUser { pub username: String, pub realname: Option, pub email: Option, pub password: String, } impl User { pub fn by_id(user_id: i32, conn: utils::DbConn) -> QueryResult { use schema::users::dsl::*; users.filter(id.eq(user_id)) .load::(&*conn) .map(|ref v| v[0].clone()) } pub fn create(new_user: &NewUser, conn: utils::DbConn) -> QueryResult { use ::schema::users::dsl::*; diesel::insert_into(users) .values(new_user) .get_result(&*conn) } }