sql-orm 0.1.0

Public API crate for the sql-orm workspace.
Documentation
use sql_orm::prelude::*;

#[derive(Entity, Debug, Clone)]
struct Customer {
    id: i64,
    email: String,
    phone: Option<String>,
}

#[derive(Insertable, Debug, Clone)]
#[orm(entity = Customer)]
struct NewCustomer {
    email: String,
    phone: Option<String>,
}

#[derive(Changeset, Debug, Clone)]
#[orm(entity = Customer)]
struct UpdateCustomer {
    email: Option<String>,
    phone: Option<Option<String>>,
}

fn main() {
    let new_customer = NewCustomer {
        email: "ana@example.com".to_string(),
        phone: None,
    };
    let values = <NewCustomer as Insertable<Customer>>::values(&new_customer);
    assert_eq!(values.len(), 2);

    let update = UpdateCustomer {
        email: Some("ana.maria@example.com".to_string()),
        phone: Some(None),
    };
    let changes = <UpdateCustomer as Changeset<Customer>>::changes(&update);
    assert_eq!(changes.len(), 2);
}