1use serde::{Deserialize, Serialize};
8use serde_json::Value;
9use std::collections::HashMap;
10
11pub type Record = HashMap<String, Value>;
13
14#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
16pub struct RecordSet {
17 pub records: Vec<Record>,
18}
19
20#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
22pub enum Filter {
23 Equals { field: String, value: Value },
24 NotEquals { field: String, value: Value },
25 GreaterThan { field: String, value: f64 },
26 LessThan { field: String, value: f64 },
27 In { field: String, values: Vec<Value> },
28 And(Vec<Filter>),
29 Or(Vec<Filter>),
30}
31
32#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
34pub struct QueryOptions {
35 pub sort_by: Option<(String, Direction)>,
36 pub limit: Option<usize>,
37 pub offset: Option<usize>,
38}
39
40#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq)]
42pub enum Direction {
43 Asc,
44 Desc,
45}
46
47#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
49pub struct DbStats {
50 pub collection_count: usize,
51 pub record_count: usize,
52}
53
54#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
56pub struct BatchRequest {
57 pub requests: HashMap<String, (String, String, String)>, }
59
60#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
62pub struct BatchResponse {
63 pub results: HashMap<String, Option<Record>>,
64}