microrm 0.6.3

Lightweight ORM using sqlite as a backend
Documentation
mod common;
use test_log::test;

use microrm::prelude::*;

#[derive(Entity)]
struct Object {
    written: String,
}

#[derive(Entity)]
struct Subject {
    written: String,
}

#[derive(Entity)]
struct Verb {
    written: String,
}

#[derive(Schema)]
struct DictionarySchema {
    objects: microrm::IDMap<Object>,
    subjects: microrm::IDMap<Subject>,
    verbs: microrm::IDMap<Verb>,
}

#[derive(Entity)]
struct Sentence {
    object: ObjectID,
    subject: SubjectID,
    verb: VerbID,
}

#[derive(Schema)]
struct SentenceSchema {
    sentences: microrm::IDMap<Sentence>,
}

#[derive(Schema)]
struct CombinedSchema {
    dictionary: DictionarySchema,
    sentence: SentenceSchema,
}

#[test]
fn nested() {
    let (pool, db): (_, CombinedSchema) = common::open_test_db!();
    let mut txn = pool.start().unwrap();

    let obj_id = db
        .dictionary
        .objects
        .insert(
            &mut txn,
            Object {
                written: String::from("an_object"),
            },
        )
        .expect("couldn't insert object");

    let subj_id = db
        .dictionary
        .subjects
        .insert(
            &mut txn,
            Subject {
                written: String::from("a_subject"),
            },
        )
        .expect("couldn't insert subject");

    let verb_id = db
        .dictionary
        .verbs
        .insert(
            &mut txn,
            Verb {
                written: String::from("verb1"),
            },
        )
        .expect("couldn't insert verb");

    db.sentence
        .sentences
        .insert(
            &mut txn,
            Sentence {
                object: obj_id,
                subject: subj_id,
                verb: verb_id,
            },
        )
        .expect("couldn't insert sentence");
}