use spacedb_access::{Did, SignedCapability};
use spacedb_consistency::CausalSession;
use spacedb_meter::Budget;
pub struct Session {
pub(crate) actor: Did,
pub(crate) capability: SignedCapability,
pub(crate) budget: Budget,
pub(crate) causal: CausalSession,
}
impl Session {
pub(crate) fn from_capability(capability: SignedCapability) -> Self {
let actor = capability.capability.bearer.clone();
let budget = Budget::new(capability.capability.budget_micro_mata.unwrap_or(0));
Self {
actor,
capability,
budget,
causal: CausalSession::new(),
}
}
pub fn actor(&self) -> &Did {
&self.actor
}
pub fn budget_remaining(&self) -> u64 {
self.budget.remaining()
}
}