ormer-derive 0.1.0

The simplest ORM for Rust.
Documentation
# ormer


![version](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2Ffawdlstty%2Former%2Fmain%2F/ormer/Cargo.toml&query=package.version&label=version)
![status](https://img.shields.io/github/actions/workflow/status/fawdlstty/ormer/rust.yml)

English | [简体中文]README.zh.md

The simplest ORM for Rust.

# Usage


<!-- [Online Documentation](https://ormer.fawdlstty.com) -->


Add the library reference:

```sh
cargo add ormer
cargo add tokio --features full
```

#### 1. Define Model


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

```rust
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


```rust
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


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

#### 4. Insert Data


```rust
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


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

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

#### 6. Transaction


```rust
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`:

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