1
0
Fork 0

Extract models into separate files

This commit is contained in:
Alex Kotov 2020-10-15 06:51:45 +05:00
parent 439b788641
commit 6d490b9883
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
2 changed files with 56 additions and 53 deletions

View File

@ -1,54 +1,3 @@
use crate::database::DbConn;
mod user;
use crate::schema::users;
use diesel::prelude::*;
use diesel::query_builder::AsQuery;
#[derive(Debug, Serialize, Queryable)]
pub struct User {
pub id: i32,
pub username: String,
pub encrypted_password: String,
}
#[derive(Debug, Insertable)]
#[table_name="users"]
pub struct NewUser<'a> {
pub username: &'a str,
pub encrypted_password: &'a str,
}
impl User {
pub fn all(db_conn: DbConn) -> Result<Vec<User>, ()> {
let query = users::table.as_query();
let debug = diesel::debug_query::<diesel::pg::Pg, _>(&query);
println!("{}", debug);
let result = query.load::<User>(&*db_conn);
match result {
Err(_) => Err(()),
Ok(users) => Ok(users),
}
}
}
impl<'a> NewUser<'a> {
pub fn save(&self, db_conn: DbConn) -> Result<(), ()> {
let query = diesel::insert_into(users::table).values(self);
let debug = diesel::debug_query::<diesel::pg::Pg, _>(&query);
println!("{}", debug);
let result = query.get_result::<User>(&*db_conn);
match result {
Err(_) => Err(()),
Ok(_) => Ok(()),
}
}
}
pub use self::user::*;

54
src/models/user.rs Normal file
View File

@ -0,0 +1,54 @@
use crate::database::DbConn;
use crate::schema::users;
use diesel::prelude::*;
use diesel::query_builder::AsQuery;
#[derive(Debug, Serialize, Queryable)]
pub struct User {
pub id: i32,
pub username: String,
pub encrypted_password: String,
}
#[derive(Debug, Insertable)]
#[table_name="users"]
pub struct NewUser<'a> {
pub username: &'a str,
pub encrypted_password: &'a str,
}
impl User {
pub fn all(db_conn: DbConn) -> Result<Vec<User>, ()> {
let query = users::table.as_query();
let debug = diesel::debug_query::<diesel::pg::Pg, _>(&query);
println!("{}", debug);
let result = query.load::<User>(&*db_conn);
match result {
Err(_) => Err(()),
Ok(users) => Ok(users),
}
}
}
impl<'a> NewUser<'a> {
pub fn save(&self, db_conn: DbConn) -> Result<(), ()> {
let query = diesel::insert_into(users::table).values(self);
let debug = diesel::debug_query::<diesel::pg::Pg, _>(&query);
println!("{}", debug);
let result = query.get_result::<User>(&*db_conn);
match result {
Err(_) => Err(()),
Ok(_) => Ok(()),
}
}
}