brewlog/src/domain/sessions.rs

59 lines
1.2 KiB
Rust

use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use crate::domain::ids::{SessionId, UserId};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Session {
pub id: SessionId,
pub user_id: UserId,
pub session_token_hash: String,
pub created_at: DateTime<Utc>,
pub expires_at: DateTime<Utc>,
}
impl Session {
pub fn new(
id: SessionId,
user_id: UserId,
session_token_hash: String,
created_at: DateTime<Utc>,
expires_at: DateTime<Utc>,
) -> Self {
Self {
id,
user_id,
session_token_hash,
created_at,
expires_at,
}
}
pub fn is_expired(&self) -> bool {
Utc::now() > self.expires_at
}
}
#[derive(Debug, Clone)]
pub struct NewSession {
pub user_id: UserId,
pub session_token_hash: String,
pub created_at: DateTime<Utc>,
pub expires_at: DateTime<Utc>,
}
impl NewSession {
pub fn new(
user_id: UserId,
session_token_hash: String,
created_at: DateTime<Utc>,
expires_at: DateTime<Utc>,
) -> Self {
Self {
user_id,
session_token_hash,
created_at,
expires_at,
}
}
}