ormer-derive 0.1.0

The simplest ORM for Rust.
Documentation

ormer

version status

English | 简体中文

The simplest ORM for Rust.

Usage

Add the library reference:

cargo add ormer

cargo add tokio --features full

1. Define Model

Use the #[derive(Model)] macro to define your database model:

use ormer::Model;

#[derive(Model, Debug, Clone)]
#[table = "users"]
struct User {
    #[primary(auto)]
    id: i32,
    #[unique]
    name: String,
    #[index]
    age: i32,
    email: Option<String>,
}

2. Connect to Database

use ormer::abstract_layer::Database;
use ormer::DbType;

#[tokio::main]
async fn main() {
    let db = Database::connect(DbType::Turso, ":memory:")
        .await
        .expect("Failed to connect");
}

3. Create Table

db.create_table::<User>().await.expect("Failed to create table");

4. Insert Data

let user = User {
    id: 0, // Will be auto-generated
    name: "Alice".to_string(),
    age: 25,
    email: Some("alice@example.com".to_string()),
};

db.insert(&user).await.expect("Failed to insert");

5. Query Data

let users: Vec<User> = db
    .select::<User>()
    .collect::<Vec<User>>()
    .await
    .expect("Failed to query");

for user in users {
    println!("User: {:?}", user);
}

6. Transaction

let txn = db.begin().await.expect("Failed to begin transaction");

let user = User {
    id: 0,
    name: "Bob".to_string(),
    age: 30,
    email: None,
};

txn.insert(&user).await.expect("Failed to insert");
txn.commit().await.expect("Failed to commit");

Features

  • turso (default): Use Turso/libsql database backend
  • postgresql: Use PostgreSQL database backend
  • mysql: Use MySQL database backend

Enable features in your Cargo.toml:

[dependencies]

ormer = { version = "0.1", features = ["postgresql"] }