use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
pub type Record = HashMap<String, Value>;
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
pub struct RecordSet {
pub records: Vec<Record>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub enum Filter {
Equals { field: String, value: Value },
NotEquals { field: String, value: Value },
GreaterThan { field: String, value: f64 },
LessThan { field: String, value: f64 },
In { field: String, values: Vec<Value> },
And(Vec<Filter>),
Or(Vec<Filter>),
}
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
pub struct QueryOptions {
pub sort_by: Option<(String, Direction)>,
pub limit: Option<usize>,
pub offset: Option<usize>,
}
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq)]
pub enum Direction {
Asc,
Desc,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct DbStats {
pub collection_count: usize,
pub record_count: usize,
}
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
pub struct BatchRequest {
pub requests: HashMap<String, (String, String, String)>, }
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
pub struct BatchResponse {
pub results: HashMap<String, Option<Record>>,
}