versatile_data/search/
enums.rs1use crate::{Activity, FieldName};
2use std::{
3 ops::RangeInclusive,
4 sync::Arc,
5 time::{SystemTime, UNIX_EPOCH},
6};
7
8#[derive(Clone, Debug, PartialEq)]
9pub enum Term {
10 In(u64),
11 Past(u64),
12 Future(u64),
13}
14
15impl Default for Term {
16 fn default() -> Self {
17 Self::In(
18 SystemTime::now()
19 .duration_since(UNIX_EPOCH)
20 .unwrap()
21 .as_secs(),
22 )
23 }
24}
25
26#[derive(Debug, Clone, PartialEq)]
27pub enum Number {
28 Min(isize),
29 Max(isize),
30 Range(RangeInclusive<isize>),
31 In(Vec<isize>),
32}
33
34#[derive(Debug, Clone, PartialEq)]
35pub enum Field {
36 Match(Vec<u8>),
37 Range(Vec<u8>, Vec<u8>),
38 Min(Vec<u8>),
39 Max(Vec<u8>),
40 Forward(Arc<String>),
41 Partial(Arc<String>),
42 Backward(Arc<String>),
43 ValueForward(Arc<String>),
44 ValueBackward(Arc<String>),
45 ValuePartial(Arc<String>),
46}
47
48#[derive(Debug)]
49pub enum Condition<'a> {
50 Activity(Activity),
51 Term(Term),
52 Row(&'a Number),
53 Uuid(&'a [u128]),
54 LastUpdated(&'a Number),
55 Field(FieldName, &'a Field),
56 Narrow(&'a Vec<Condition<'a>>),
57 Wide(&'a Vec<Condition<'a>>),
58}