Inventur/inventur_db/src/users.rs~
Johannes Randerath c06ddc9498 First release
2024-08-27 18:25:04 +02:00

57 lines
1.5 KiB
Rust

use crate::models;
use crate::schema;
use schema::users::dsl::{users, id, username, email};
use models::NewUser;
use diesel::prelude::*;
use diesel::mysql::MysqlConnection;
pub fn create_user(conn: &mut MysqlConnection, uname: String, mail: String) -> Result<usize, diesel::result::Error> {
let user = NewUser { username: uname, email: mail};
diesel::insert_into(crate::schema::users::table)
.values(&user)
.execute(conn)
}
pub fn delete_user(conn: &mut MysqlConnection, uid: i32) -> Result<usize, diesel::result::Error> {
diesel::delete(users.find(uid))
.execute(conn)
}
pub fn get_uid_email(conn: &mut MysqlConnection, mail: String) -> Result<i32, diesel::result::Error> {
users
.filter(email.eq(mail))
.select(id)
.first::<i32>(conn)
}
pub fn get_uid_uname(conn: &mut MysqlConnection, uname: String) -> Result<i32, diesel::result::Error> {
users
.filter(username.eq(uname))
.select(id)
.first::<i32>(conn)
}
pub fn get_uname(conn: &mut MysqlConnection, uid: i32) -> Result<String, diesel::result::Error> {
users
.find(uid)
.select(username)
.first::<String>(conn)
}
pub fn get_email(conn: &mut MysqlConnection, uid: i32) -> Result<String, diesel::result::Error> {
users
.find(uid)
.select(email)
.first::<String>(conn)
}
pub fn get_user_tables(conn: &mut MysqlConnection, uid: i32) -> Result<Vec<i32>, diesel::result::Error> {
use schema::jrtables::dsl::{jrtables, id as tblid, owner_id};
jrtables
.filter(owner_id.eq(uid))
.select(tblid)
.load::<i32>(conn)
}