61 lines
1.9 KiB
Rust
61 lines
1.9 KiB
Rust
use diesel::prelude::*;
|
|
|
|
use crate::schema::*;
|
|
|
|
#[derive(Clone, Queryable, Selectable, Insertable, Associations)]
|
|
#[diesel(belongs_to(super::user::User))]
|
|
#[diesel(table_name = sessions)]
|
|
#[diesel(check_for_backend(diesel::sqlite::Sqlite))]
|
|
pub struct Session {
|
|
pub id: i64,
|
|
pub user_id: i64,
|
|
pub last_seen: i64,
|
|
}
|
|
|
|
impl Session {
|
|
// pub fn new_for_user(pool: &DbPool, user_id: i64, last_seen: i64) -> DbResult<Self> {
|
|
// let id: i64 = rand::thread_rng().gen();
|
|
|
|
// Ok(Self {
|
|
// id,
|
|
// user_id,
|
|
// last_seen,
|
|
// }
|
|
// .insert_into(sessions::table)
|
|
// .returning(Self::as_returning())
|
|
// .get_result(&mut pool.get()?)?)
|
|
// }
|
|
|
|
// pub fn user_from_id(pool: &DbPool, id: i64) -> DbResult<Option<super::user::User>> {
|
|
// Ok(sessions::dsl::sessions
|
|
// .inner_join(users::table)
|
|
// .filter(sessions::id.eq(id))
|
|
// .select(User::as_select())
|
|
// .get_result(&mut pool.get()?)
|
|
// .optional()?)
|
|
// }
|
|
|
|
// pub fn user(&self, pool: &DbPool) -> DbResult<Option<super::user::User>> {
|
|
// Self::user_from_id(pool, self.id)
|
|
// }
|
|
|
|
// pub fn by_id(pool: &DbPool, id: i64) -> DbResult<Option<Self>> {
|
|
// Ok(sessions::dsl::sessions
|
|
// .find(id)
|
|
// .get_result(&mut pool.get()?)
|
|
// .optional()?)
|
|
// }
|
|
|
|
// pub fn remove(self, pool: &DbPool) -> DbResult<bool> {
|
|
// Self::remove_by_id(pool, self.id)
|
|
// }
|
|
|
|
// pub fn remove_by_id(pool: &DbPool, id: i64) -> DbResult<bool> {
|
|
// Ok(
|
|
// diesel::delete(sessions::dsl::sessions.filter(sessions::id.eq(id)))
|
|
// .execute(&mut pool.get()?)?
|
|
// > 0,
|
|
// )
|
|
// }
|
|
}
|