fabrique 0.3.1

SQL-first, type-safe, ergonomic database toolkit for Rust
Documentation

Fabrique

SQL-first, type-safe, ergonomic database toolkit for Rust.

Fabrique provides a fluent API for defining models, querying data, and generating test fixtures — built on SQL semantics rather than hiding them.

Core Features

Models

Define database models using the #[derive(Model)] macro. Models automatically map to database tables and provide methods for CRUD operations, soft deletes, and more. See the [model] module for detailed documentation.

Query Builder

Build type-safe database queries with a fluent API. The query builder provides methods for filtering, ordering, limiting results, and more. See the [query_builder] module for details.

Factories

Generate test data easily with the #[derive(Factory)] macro. Factories help you create model instances for testing without manually specifying every field. See the [factory] module for more information.

Quick Example

# extern crate fabrique;
# extern crate sqlx;
# extern crate tokio;
# extern crate uuid;
use fabrique::prelude::*;
# use uuid::Uuid;

// Define a model
#[derive(Clone, Model, Factory)]
pub struct Product {
    id: uuid::Uuid,
    name: String,
    price_cents: i32,
}

# #[fabrique::doctest]
# async fn main(pool: Pool<sqlx::Sqlite>) -> Result<(), fabrique::Error> {
// Query the database
let expensive_products: Vec<Product> = Product::query()
    .r#where(Product::PRICE_CENTS, ">=", 1000)
    .get(&pool)
    .await?;

// Create a new record
let product = Product {
    id: uuid::Uuid::new_v4(),
    name: "Anvil 3000".to_string(),
    price_cents: 9999,
};
product.create(&pool).await?;

// Generate test data with factories
let test_product = Product::factory().create(&pool).await?;
# Ok(())
# }

Getting Started

To use Fabrique in your project, add it to your Cargo.toml:

[dependencies]
fabrique = { version = "0.2", features = ["sqlite"] }

[dev-dependencies]
fabrique = { version = "0.2", features = ["testing"] }

Then define your models and start querying. See the [model] module for a comprehensive guide on model conventions and usage