use crate::domain::error::DomainResult;
use std::collections::HashSet;
pub trait VectorRepository: std::fmt::Debug + Send + Sync {
fn init_vec_table(&self, dimensions: usize) -> DomainResult<()>;
fn upsert_embedding(&self, bookmark_id: i32, embedding: &[f32]) -> DomainResult<()>;
fn delete_embedding(&self, bookmark_id: i32) -> DomainResult<()>;
fn search_nearest(
&self,
query_embedding: &[f32],
limit: usize,
) -> DomainResult<Vec<(i32, f64)>>;
fn has_embeddings(&self) -> DomainResult<bool>;
fn get_dimensions(&self) -> DomainResult<Option<usize>>;
fn clear_all(&self) -> DomainResult<()>;
fn get_embedded_ids(&self) -> DomainResult<std::collections::HashSet<i32>>;
fn search_nearest_filtered(
&self,
query_embedding: &[f32],
limit: usize,
filter_ids: Option<&HashSet<i32>>,
) -> DomainResult<Vec<(i32, f64)>>;
}