use basemyai_core::{Filter, Value};
#[derive(Debug, Clone, Copy)]
pub struct Validity {
pub valid_from: i64,
pub valid_until: Option<i64>,
}
impl Validity {
#[must_use]
pub fn since(from: i64) -> Self {
Self {
valid_from: from,
valid_until: None,
}
}
#[must_use]
pub fn is_valid_at(&self, now: i64) -> bool {
self.valid_from <= now && self.valid_until.is_none_or(|until| now < until)
}
}
#[must_use]
pub fn temporal_filter(now: i64) -> Filter {
Filter::new(
"valid_from <= ? AND (valid_until IS NULL OR valid_until > ?)",
vec![Value::Integer(now), Value::Integer(now)],
)
}