use std::sync::Arc;
use uni_algo::algo::AlgorithmRegistry;
use uni_plugin::{PluginError, PluginRegistrar};
pub mod algo;
pub mod create;
pub mod fts;
pub mod graph;
mod host_args;
pub mod schema;
pub mod search;
pub mod vector;
#[must_use]
pub fn default_host_plugin_registry() -> Arc<uni_plugin::PluginRegistry> {
use uni_plugin::{Capability, CapabilitySet, PluginId, PluginRegistrar};
let registry = Arc::new(uni_plugin::PluginRegistry::default());
let plugin_id = PluginId::new("uni");
let caps = CapabilitySet::from_iter_of([Capability::Procedure, Capability::ProcedureSchema]);
let mut r = PluginRegistrar::new(plugin_id, &caps, ®istry);
let algo_registry: Arc<AlgorithmRegistry> = Arc::new(AlgorithmRegistry::new());
register_into(&mut r, Some(&algo_registry))
.expect("default host plugin registration must succeed");
r.commit_to_registry()
.expect("default host plugin commit must succeed");
registry
}
pub fn register_into(
r: &mut PluginRegistrar<'_>,
algo_registry: Option<&Arc<AlgorithmRegistry>>,
) -> Result<(), PluginError> {
schema::register_into(r)?;
vector::register_into(r)?;
fts::register_into(r)?;
search::register_into(r)?;
graph::register_into(r)?;
create::register_into(r)?;
if let Some(algo) = algo_registry {
algo::register_into(r, algo)?;
}
Ok(())
}