use std::future::Future;
use crate::hashing::{KeyVersion, LookupKey};
use crate::secret::{SessionId, SubjectId};
use super::error::StoreError;
#[derive(Debug, Clone)]
pub struct ActiveSessionRecord {
pub id: SessionId,
pub subject: SubjectId,
pub expires_at: u64,
}
pub struct SessionRecord {
pub id: SessionId,
pub lookup_key: LookupKey,
pub key_version: KeyVersion,
pub subject: SubjectId,
pub created_at: u64,
pub expires_at: u64,
}
pub trait SessionStore {
fn find_active_session(
&self,
candidates: &[LookupKey],
now: u64,
) -> impl Future<Output = Result<Option<ActiveSessionRecord>, StoreError>>;
fn insert_session(&self, record: SessionRecord)
-> impl Future<Output = Result<(), StoreError>>;
fn revoke_session(
&self,
session_id: &SessionId,
now: u64,
) -> impl Future<Output = Result<(), StoreError>>;
}