versatile-data 0.92.0

A library for databases that has convenient datasets that group together commonly used fields and gives you the flexibility to create your own fields.
Documentation
use crate::Activity;
use std::{
    ops::RangeInclusive,
    sync::Arc,
    time::{SystemTime, UNIX_EPOCH},
};

#[derive(Clone, Debug)]
pub enum Term {
    In(u64),
    Past(u64),
    Future(u64),
}

impl Default for Term {
    #[inline(always)]
    fn default() -> Self {
        Self::In(
            SystemTime::now()
                .duration_since(UNIX_EPOCH)
                .unwrap()
                .as_secs(),
        )
    }
}

#[derive(Debug)]
pub enum Number {
    Min(isize),
    Max(isize),
    Range(RangeInclusive<isize>),
    In(Vec<isize>),
}

#[derive(Debug)]
pub enum Field {
    Match(Vec<u8>),
    Range(Vec<u8>, Vec<u8>),
    Min(Vec<u8>),
    Max(Vec<u8>),
    Forward(Arc<String>),
    Partial(Arc<String>),
    Backward(Arc<String>),
    ValueForward(Arc<String>),
    ValueBackward(Arc<String>),
    ValuePartial(Arc<String>),
}

#[derive(Debug)]
pub enum Condition<'a> {
    Activity(Activity),
    Term(Term),
    Row(&'a Number),
    Uuid(&'a [u128]),
    LastUpdated(&'a Number),
    Field(&'a str, &'a Field),
    Narrow(&'a Vec<Condition<'a>>),
    Wide(&'a Vec<Condition<'a>>),
}