use std::collections::BTreeMap;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Value {
Null,
Str(String),
Int(i64),
Bool(bool),
List(Vec<String>),
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Record {
pub id: String,
pub vector: Vec<f32>,
pub attrs: BTreeMap<String, Value>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Predicate {
Eq(String, Value),
Glob(String, String),
In(String, Vec<Value>),
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct Filter(pub Vec<Predicate>);
#[derive(Clone, Debug, Default)]
pub struct SearchOpts {
pub top_k: usize,
pub filter: Filter,
pub min_score: Option<f32>,
}
#[derive(Clone, Debug, PartialEq)]
pub struct Hit {
pub collection: String,
pub id: String,
pub score: f32,
pub attrs: BTreeMap<String, Value>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct Footprint {
pub rows: u64,
pub dead_rows: u64,
pub dimension: usize,
pub vector_bytes: u64,
pub doc_count: usize,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Op {
CreateCollection {
collection: String,
},
DropCollection {
collection: String,
},
SetMeta {
collection: String,
meta: BTreeMap<String, String>,
},
Upsert {
collection: String,
id: String,
row: u64,
attrs: BTreeMap<String, Value>,
},
Delete {
collection: String,
id: String,
},
}