dwbase_embedder_dummy/
lib.rs

1//! Dummy embedder implementation for DWBase; returns no embedding and is intended for local
2//! development when vector search is optional.
3
4use std::{future::Future, pin::Pin};
5
6use dwbase_engine::{Embedder, Result};
7
8/// No-op embedder that always yields `None`.
9#[derive(Clone, Debug, Default)]
10pub struct DummyEmbedder;
11
12impl DummyEmbedder {
13    pub fn new() -> Self {
14        Self
15    }
16}
17
18impl Embedder for DummyEmbedder {
19    #[allow(clippy::type_complexity)]
20    fn embed<'a>(
21        &'a self,
22        _payload_json: &'a str,
23    ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<f32>>>> + Send + 'a>> {
24        Box::pin(std::future::ready(Ok(None)))
25    }
26
27    fn model_version(&self) -> &'static str {
28        "dummy-v1"
29    }
30}
31
32#[cfg(test)]
33mod tests {
34    use super::*;
35
36    #[tokio::test]
37    async fn returns_none() {
38        let embedder = DummyEmbedder::new();
39        let res = embedder.embed(r#"{"foo":"bar"}"#).await;
40        assert!(res.unwrap().is_none());
41    }
42}