ormlitex 0.17.1

An ORM for people who love SQL
Documentation
use ormlitex::Model;
use ormlitex::model::{Insertable, Join, JoinMeta};
use sqlmo::ToSql;

use ormlitex::Connection;
#[path = "../setup.rs"]
mod setup;

#[derive(Debug, Model, Clone)]
pub struct Organization {
    id: i32,
    name: String,
}

#[derive(Model)]
#[ormlitex(insertable = InsertUser)]
pub struct User {
    id: i32,
    name: String,
    #[ormlitex(default)]
    secret: Option<String>,
    #[ormlitex(default_value = "5")]
    number: i32,
    #[ormlitex(column = "type")]
    typ: i32,
    #[ormlitex(join_column = "org_id")]
    organization: Join<Organization>,
}

#[tokio::main]
async fn main() {
    let mut db = ormlitex::sqlite::SqliteConnection::connect(":memory:")
        .await
        .unwrap();
    let migration = setup::migrate_self(&[file!()]);
    for s in migration.statements {
        let sql = s.to_sql(sqlmo::Dialect::Sqlite);
        ormlitex::query(&sql)
            .execute(&mut db)
            .await
            .unwrap();
    }

    let org = Organization {
        id: 12321,
        name: "my org".to_string(),
    };

    let champ = InsertUser {
        name: "Champ".to_string(),
        organization: Join::new(org.clone()),
        typ: 12,
    }.insert(&mut db)
        .await
        .unwrap();

    assert_eq!(champ.id, 1);
    assert_eq!(champ.secret, None);
    assert_eq!(champ.number, 5);
    assert_eq!(champ.organization.id, 12321);
    assert_eq!(champ.organization.name, "my org");

    let millie = InsertUser {
        name: "Millie".to_string(),
        organization: Join::new(org),
        typ: 3,
    }.insert(&mut db)
        .await
        .unwrap();
    assert_eq!(millie.id, 2);
    assert_eq!(millie.secret, None);
    assert_eq!(millie.number, 5);
    assert_eq!(millie.organization.id, 12321);
    assert_eq!(millie.organization.name, "my org");

    let enoki = InsertUser {
        name: "Enoki".to_string(),
        organization: Join::new_with_id(12321),
        typ: 6,
    }.insert(&mut db)
        .await
        .unwrap();
    assert_eq!(enoki.id, 3);
    assert_eq!(enoki.secret, None);
    assert_eq!(enoki.number, 5);
    assert_eq!(enoki.organization.id, 12321);
    assert_eq!(enoki.organization.loaded(), false);

}