1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
pub mod db;
use std::env::var;

pub use async_lazy::Lazy;
use ctor::ctor;
pub use db::Db;
pub use paste::paste;
use qdrant_client::prelude::{QdrantClient, QdrantClientConfig};

static Q: Lazy<QdrantClient> = Lazy::const_new(|| {
  Box::pin(async move {
    let uri = "QDRANT_GRPC";
    let grpc = var(uri).expect(&format!("MISS ENV {uri}"));
    tracing::info!("connecting to qdrant {grpc}");
    let mut config = QdrantClientConfig::from_url(&grpc);
    if let Ok(key) = var("QDRANT__SERVICE__API_KEY") {
      config.set_api_key(&key);
    }
    QdrantClient::new(Some(config)).expect(&format!("CAN'T CONNECT {uri}"))
  })
});

#[ctor]
fn init() {
  trt::TRT.block_on(async move {
    use std::future::IntoFuture;
    Q.into_future().await;
  })
}

pub fn qdrant_client() -> &'static QdrantClient {
  Q.get().unwrap()
}