rquery-orm 1.0.0

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

#[derive(Entity, Debug)]
#[table(name = "Users")]
struct User {
    #[key(is_identity = true)]
    id: i32,

    #[column(
        required,
        max_length = 30,
        error_required = "Username is required",
        error_max_length = "Max 30 chars"
    )]
    username: String,

    #[column(
        required,
        regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
        error_regex = "Invalid email format"
    )]
    email: String,

    #[column(min_length = 8, error_min_length = "Password must be at least 8 chars")]
    password: String,

    #[column(allow_null = true)]
    bio: Option<String>,
}

#[test]
fn validation_fails() {
    let user = User {
        id: 0,
        username: "".into(),
        email: "invalid".into(),
        password: "123".into(),
        bio: None,
    };
    let errs = user.validate().unwrap_err();
    assert!(errs.contains(&"Username is required".to_string()));
    assert!(errs.contains(&"Invalid email format".to_string()));
    assert!(errs.contains(&"Password must be at least 8 chars".to_string()));
}

#[test]
fn validation_passes() {
    let user = User {
        id: 1,
        username: "john".into(),
        email: "john@example.com".into(),
        password: "password123".into(),
        bio: None,
    };
    assert!(user.validate().is_ok());
}