Skip to main content

Crate fabrique

Crate fabrique 

Source
Expand description

§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

use fabrique::prelude::*;

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

// Query the database
let expensive_products: Vec<Product> = Product::query()
    .r#where(Product::PRICE_CENTS, ">=", 1000)
    .get(db)
    .await?;

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

// Generate test data with factories
let test_product = Product::factory().create(db).await?;

§Getting Started

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

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

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

Re-exports§

pub use fake;
pub use database::*;
pub use error::*;
pub use factory::*;
pub use model::*;
pub use relation::*;

Modules§

database
Database configuration and types.
error
Error types for Fabrique database operations.
factory
Factories
model
Model traits for database operations.
prelude
relation
Relationship types for model associations.
sql
Database: Query Builder

Functions§

seeded_value
Generates a seeded value for factory fields.

Attribute Macros§

doctest
Creates an in-memory SQLite database with migrations for documentation examples.
test
Test helper that wraps #[sqlx::test] with the correct migrations path for the active database backend.