modelvault_core/query/
ast.rs1use crate::schema::{CollectionId, FieldPath};
2use crate::ScalarValue;
3
4#[derive(Debug, Clone, PartialEq)]
5pub struct Query {
6 pub collection: CollectionId,
7 pub predicate: Option<Predicate>,
8 pub limit: Option<usize>,
9 pub order_by: Option<OrderBy>,
10}
11
12#[derive(Debug, Clone, PartialEq, Eq)]
13pub struct OrderBy {
14 pub path: FieldPath,
15 pub direction: OrderDirection,
16}
17
18#[derive(Debug, Clone, Copy, PartialEq, Eq)]
19pub enum OrderDirection {
20 Asc,
21 Desc,
22}
23
24#[derive(Debug, Clone, PartialEq)]
25pub enum Predicate {
26 Eq { path: FieldPath, value: ScalarValue },
27 Lt { path: FieldPath, value: ScalarValue },
28 Lte { path: FieldPath, value: ScalarValue },
29 Gt { path: FieldPath, value: ScalarValue },
30 Gte { path: FieldPath, value: ScalarValue },
31 And(Vec<Predicate>),
32 Or(Vec<Predicate>),
33}