Expand description
§Lume
A type-safe, ergonomic schema builder and ORM for SQL databases, inspired by Drizzle ORM.
§Features
- 🚀 Type-safe: Compile-time type checking for all database operations
- 🎯 Ergonomic: Clean, intuitive API inspired by modern ORMs
- ⚡ Performance: Zero-cost abstractions with minimal runtime overhead
- 🔧 Flexible: Support for various column constraints and SQL types
- 🛡️ Safe: Prevents SQL injection and runtime type errors
- 📦 Lightweight: Minimal dependencies, maximum functionality
§Quick Start
ⓘ
use lume::define_schema;
use lume::schema::{Schema, ColumnInfo, Value};
use lume::database::Database;
// Define your database schema
define_schema! {
Users {
id: i32 [primary_key().not_null()],
username: String [not_null()],
email: String,
age: i32,
is_active: bool [default_value(true)],
}
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Connect to your MySQL/Postgres database
let db = Database::connect("mysql://user:password@localhost/database").await?;
// Type-safe queries
let users = db
.query::<Users, SelectUsers>()
.filter(lume::filter::Filter::eq_value("username", Value::String("john_doe".to_string())))
.execute()
.await?;
for user in users {
let username: Option<String> = user.get(Users::username());
println!("User: {}", username.unwrap_or_default());
}
Ok(())
}§Supported Database Types
String→VARCHAR(255)i32→INTEGERi64→BIGINTf32→FLOATf64→DOUBLEbool→BOOLEAN
§Column Constraints
primary_key()- Sets the column as primary keynot_null()- Makes the column NOT NULLunique()- Adds a UNIQUE constraintindexed()- Creates an index on the columndefault_value(value)- Sets a default value
Modules§
- database
- Database connection and management functionality
- filter
- Query filtering and condition building
- operations
- Database operations (queries, inserts, etc.)
- row
- Row abstraction for type-safe data access
- schema
- Schema definition and column management
- table
- Table registry and definition management
Macros§
- __
lume_ option_ type - Helper macro: decides field type as
Option<T>ifdefault_value(...)orauto_increment()is present in the column args; otherwise keeps it asT. - define_
schema - Defines a database schema with type-safe columns and constraints.
- enum_
to_ sql - Macro to generate SQL string conversions for enums used as custom SQL column types.