59 lines
1.2 KiB
Rust
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,
|
|
}
|
|
}
|
|
}
|