appdb 0.2.17

Lightweight SurrealDB helper library for Tauri embedded database apps
Documentation
use appdb::prelude::{Crud, Id, TxStmt};
use appdb::{CryptoContext, Sensitive, Store};
use serde::{Deserialize, Serialize};
use surrealdb::types::SurrealValue;

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Sensitive)]
struct FacadeSecret {
    #[secure]
    value: String,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, SurrealValue, Store)]
struct FacadeUser {
    id: Id,
    name: String,
}

#[test]
fn root_and_prelude_exports_expose_capabilities() {
    let stmt = TxStmt::new("RETURN $value;").bind("value", 7i64);
    assert_eq!(stmt.sql, "RETURN $value;");

    let key: Id = "user-1".into();
    assert_eq!(key.as_string(), Some("user-1"));

    let context = CryptoContext::new([9_u8; 32]).expect("context should build");
    let secret = FacadeSecret {
        value: "top-secret".to_owned(),
    };
    let encrypted = secret.encrypt(&context).expect("secret should encrypt");
    assert_ne!(encrypted.value, secret.value.as_bytes());
}

#[test]
fn prelude_reexports_common_items() {
    let stmt = TxStmt::new("RETURN NONE;");
    assert_eq!(stmt.sql, "RETURN NONE;");

    let id: Id = 42.into();
    assert_eq!(id.as_number(), Some(42));

    let _save = FacadeUser::save;
    let _save_many = FacadeUser::save_many;
    let _create = FacadeUser::create;
    let _get = FacadeUser::get::<&str>;
    let _crud_save = <FacadeUser as Crud>::save;
}