use nodedb_types::SystemTimeScope;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum ValidTime {
#[default]
Any,
At(i64),
Range(i64, i64),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub struct TemporalScope {
pub system_time: SystemTimeScope,
pub valid_time: ValidTime,
}
impl TemporalScope {
pub fn is_temporal(&self) -> bool {
self.system_time.is_temporal() || !matches!(self.valid_time, ValidTime::Any)
}
pub fn require_bitemporal(&self, collection: &str, bitemporal: bool) -> crate::Result<()> {
if self.is_temporal() && !bitemporal {
return Err(crate::SqlError::Unsupported {
detail: format!(
"FOR SYSTEM_TIME / FOR VALID_TIME requires a bitemporal collection; \
'{collection}' was not created WITH bitemporal = true"
),
});
}
Ok(())
}
}