appdb 0.2.21

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

#[derive(Debug, Clone, Serialize, Deserialize, SurrealValue, Store)]
struct Post {
    id: Id,
    #[unique]
    slug: String,
    title: String,
}

#[derive(Debug, Clone, Serialize, Deserialize, SurrealValue, Store)]
#[table_as(Post)]
struct PostBase {
    id: Id,
    #[unique]
    slug: String,
}

#[derive(Debug, Clone, Serialize, Deserialize, SurrealValue, Store)]
struct Feed {
    id: Id,
    #[foreign]
    featured: Option<PostBase>,
    #[foreign]
    nested: Option<Vec<Vec<PostBase>>>,
}

fn main() {
    assert_eq!(Post::table_name(), PostBase::table_name());

    let _ = Feed {
        id: Id::from("feed"),
        featured: Some(PostBase {
            id: Id::from("post"),
            slug: "hello".to_owned(),
        }),
        nested: Some(vec![vec![PostBase {
            id: Id::from("post-2"),
            slug: "world".to_owned(),
        }]]),
    };
}