microrm 0.6.3

Lightweight ORM using sqlite as a backend
Documentation
use microrm::prelude::*;
use test_log::test;

mod common;

#[derive(Entity)]
struct Child {
    #[key]
    name: String,
    parent: ParentID,
}

#[derive(Entity)]
struct Parent {
    name: String,
}

#[derive(Schema)]
struct PeopleDB {
    children: microrm::IDMap<Child>,
    parents: microrm::IDMap<Parent>,
}

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

    let pid = db
        .parents
        .insert(
            &mut txn,
            Parent {
                name: "parent1".to_string(),
            },
        )
        .unwrap();
    let _c1id = db
        .children
        .insert(
            &mut txn,
            Child {
                name: "child1".to_string(),
                parent: pid,
            },
        )
        .unwrap();

    let p2id = db
        .parents
        .insert(
            &mut txn,
            Parent {
                name: "parent2".to_string(),
            },
        )
        .unwrap();
    let _c2id = db
        .children
        .insert(
            &mut txn,
            Child {
                name: "child2".to_string(),
                parent: p2id,
            },
        )
        .unwrap();
    let _c3id = db
        .children
        .insert(
            &mut txn,
            Child {
                name: "child3".to_string(),
                parent: p2id,
            },
        )
        .unwrap();

    txn.commit().unwrap();
    let mut txn = pool.start().unwrap();

    assert_eq!(
        db.children
            .foreign(Child::Parent)
            .get_ids(&mut txn)
            .expect("couldn't run query"),
        vec![pid, p2id]
    );

    assert_eq!(
        db.children
            .keyed("child1")
            .foreign(Child::Parent)
            .get_ids(&mut txn)
            .expect("couldn't run query"),
        Some(pid)
    );
}