genius-core-client 0.4.0

Genius Core Client Library. Written in Rust and using PyO3 for Python bindings.
Documentation
use std::error::Error;

use async_once_cell::OnceCell;
use genius_core_client::{
    client::{Client, Protocol},
    types::error::HstpError,
    CollisionStrategy,
};

static CELL: OnceCell<Result<String, HstpError>> = async_once_cell::OnceCell::new();

async fn upsert_docs() -> Result<String, HstpError> {
    let token = std::env::var("GENIUS_JWT").map_err(HstpError::from_error)?;
    let db_url = std::env::var("GENIUS_DB_URL").map_err(HstpError::from_error)?;
    let port = std::env::var("GENIUS_DB_PORT").map_err(HstpError::from_error)?;

    let mut client =
        Client::new_with_oauth2_token(Protocol::HTTPS, db_url, port, token.clone(), None).await?;

    client
        .upsert_hsml_json(
            "./tests/data/schemas.json",
            CollisionStrategy::ForceOverwrite,
        )
        .await?;
    client
        .upsert_hsml_json(
            "./tests/data/gps_vec_space.json",
            CollisionStrategy::ForceOverwrite,
        )
        .await?;
    client
        .upsert_hsml_json(
            "./tests/data/gps_schemas.json",
            CollisionStrategy::ForceOverwrite,
        )
        .await?;
    client
        .upsert_hsml_json("./tests/data/data0.json", CollisionStrategy::ForceOverwrite)
        .await?;
    client
        .upsert_hsml_json("./tests/data/data1.json", CollisionStrategy::ForceOverwrite)
        .await?;
    client
        .upsert_hsml_json("./tests/data/data2.json", CollisionStrategy::ForceOverwrite)
        .await?;
    client
        .upsert_hsml_json("./tests/data/data3.json", CollisionStrategy::ForceOverwrite)
        .await?;
    client
        .upsert_hsml_json("./tests/data/data4.json", CollisionStrategy::ForceOverwrite)
        .await?;
    client
        .upsert_hsml_json("./tests/data/data5.json", CollisionStrategy::ForceOverwrite)
        .await?;
    client
        .upsert_hsml_json("./tests/data/data6.json", CollisionStrategy::ForceOverwrite)
        .await?;
    client
        .upsert_hsml_json("./tests/data/data7.json", CollisionStrategy::ForceOverwrite)
        .await?;
    client
        .upsert_hsml_json(
            "./tests/data/vectorizer_test_schema.json",
            CollisionStrategy::ForceOverwrite,
        )
        .await?;
    client
        .upsert_hsml_json(
            "./tests/data/vectorizer_test_obj.json",
            CollisionStrategy::ForceOverwrite,
        )
        .await?;

    Ok(token)
}

#[allow(dead_code)]
pub async fn prepare_test() -> Result<Client, Box<dyn Error>> {
    let token = CELL.get_or_init(upsert_docs()).await.clone()?;
    let db_url = std::env::var("GENIUS_DB_URL").map_err(HstpError::from_error)?;
    let port = std::env::var("GENIUS_DB_PORT").map_err(HstpError::from_error)?;

    let client =
        Client::new_with_oauth2_token(Protocol::HTTPS, db_url, port, token.clone(), None).await?;

    Ok(client)
}