mod traits;
mod sqlite;
mod vector;
pub mod migrations;
pub use traits::{StorageBackend, StorageConfig};
pub use sqlite::SqliteBackend;
pub use vector::{VectorSearchProvider, VectorSearchResult};
use crate::types::Result;
use std::path::Path;
pub async fn create_backend(config: StorageConfig) -> Result<Box<dyn StorageBackend>> {
match config {
StorageConfig::Sqlite { path } => {
Ok(Box::new(SqliteBackend::new(&path).await?))
}
StorageConfig::Postgres { .. } => {
Err(crate::types::Error::InvalidInput(
"PostgreSQL client-library support removed. Use avocado-pgext extension instead.".to_string()
))
}
}
}
pub async fn create_backend_from_env<P: AsRef<Path>>(default_path: P) -> Result<Box<dyn StorageBackend>> {
let config = StorageConfig::from_env(default_path.as_ref().to_string_lossy().as_ref());
create_backend(config).await
}