rquery-orm 1.0.0

Lightweight SQL ORM for Rust with query-style (MSSQL + PostgreSQL).
Documentation
use chrono::{NaiveDate, NaiveDateTime};
use rquery_orm::{Entity, Persistable, PlaceholderStyle};

#[derive(Entity, Debug, Clone)]
#[table(name = "Employees")]
struct Employees {
    #[key(is_identity = true)]
    employee_id: i32,
    #[column]
    first_name: String,
    #[column]
    last_name: String,
    #[column]
    age: i32,
    #[column]
    hire_date: NaiveDateTime,
}

#[test]
fn entity_metadata() {
    let t = Employees::table();
    assert_eq!(t.name, "Employees");
    assert_eq!(t.columns.len(), 5);
    assert_eq!(t.keys.len(), 1);
    assert_eq!(t.keys[0].column, "employee_id");
}

#[test]
fn insert_sql_builds() {
    let emp = Employees {
        employee_id: 0,
        first_name: "John".to_string(),
        last_name: "Doe".to_string(),
        age: 30,
        hire_date: NaiveDate::from_ymd_opt(1970, 1, 1)
            .unwrap()
            .and_hms_opt(0, 0, 0)
            .unwrap(),
    };
    let (sql, params, has_id) = emp.build_insert(PlaceholderStyle::Dollar);
    assert_eq!(
        sql,
        "INSERT INTO Employees (first_name, last_name, age, hire_date) VALUES ($1, $2, $3, $4)"
    );
    assert_eq!(params.len(), 4);
    assert!(has_id);
}