otter/gpodder_sqlite/src/models/session.rs

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,
// )
// }
}