Expand description
§Premix ORM
“Write Rust, Run Optimized SQL.”
Premix is a zero-overhead, type-safe ORM for Rust. It generates SQL at
compile time with macros and executes via sqlx.
§Key Features
- Auto-sync schema from models.
- Compile-time SQL generation (no runtime reflection).
- Application-level joins with batched
WHERE INqueries. - SQLite, Postgres, and MySQL support via
sqlx.
§Quick Start
use premix_orm::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Model, Debug, Serialize, Deserialize)]
struct User {
id: i32,
name: String,
}
let pool = premix_orm::sqlx::SqlitePool::connect("sqlite::memory:").await?;
premix_orm::Premix::sync::<premix_orm::sqlx::Sqlite, User>(&pool).await?;
let mut user = User { id: 0, name: "Alice".to_string() };
user.save(&pool).await?;§Relations and Eager Loading
use premix_orm::prelude::*;
#[derive(Model)]
struct User {
id: i32,
name: String,
#[has_many(Post)]
#[premix(ignore)]
posts: Option<Vec<Post>>,
}
#[derive(Model)]
#[belongs_to(User)]
struct Post {
id: i32,
user_id: i32,
title: String,
}
let _users = User::find_in_pool(&pool).include("posts").all().await?;§Bulk Operations
use premix_orm::prelude::*;
use serde_json::json;
#[derive(Model)]
struct User {
id: i32,
status: String,
}
let _updated = User::find_in_pool(&pool)
.filter("status = 'inactive'")
.update(json!({ "status": "active" }))
.await?;§Installation
[dependencies]
premix-orm = "1.0.5"§Book
A longer-form guide lives in orm-book/ at the repository root. It covers
models, queries, relations, migrations, transactions, and limitations.
Modules§
- async_
trait - github crates-io docs-rs
- migrator
- prelude
- sqlx
- The async SQL toolkit for Rust, built with ❤️ by the LaunchBadge team.