appdb 0.2.21

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

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

#[derive(Debug, Clone, Serialize, Deserialize, SurrealValue, Store)]
struct ParentModel {
    id: Id,
    #[foreign]
    child: ChildModel,
    #[foreign]
    maybe_child: Option<ChildModel>,
    #[foreign]
    children: Vec<ChildModel>,
    #[foreign]
    maybe_children: Option<Vec<ChildModel>>,
    #[foreign]
    deeply_nested_children: Option<Vec<Vec<ChildModel>>>,
    #[foreign]
    nested_maybe_children: Vec<Option<ChildModel>>,
    inline_child: ChildModel,
}

fn main() {
    let _ = ParentModel {
        id: Id::from("parent"),
        child: ChildModel {
            id: Id::from("child"),
            name: "alpha".to_owned(),
        },
        maybe_child: None,
        children: Vec::new(),
        maybe_children: Some(Vec::new()),
        deeply_nested_children: Some(vec![vec![ChildModel {
            id: Id::from("deep-child"),
            name: "gamma".to_owned(),
        }]]),
        nested_maybe_children: vec![Some(ChildModel {
            id: Id::from("nested-child"),
            name: "delta".to_owned(),
        })],
        inline_child: ChildModel {
            id: Id::from("inline"),
            name: "beta".to_owned(),
        },
    };
}