use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Record {
pub id: String,
pub vector: Vec<f32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ScoredPoint {
pub id: String,
pub score: f32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ErrorResponse {
pub code: String,
pub message: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateCollectionRequest {
pub name: String,
pub dimension: usize,
pub metric: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InsertVectorsRequest {
pub collection: String,
pub records: Vec<Record>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QueryVectorsRequest {
pub collection: String,
pub vector: Vec<f32>,
pub k: usize,
}