Skip to main content

FerroModel

Derive Macro FerroModel 

Source
#[derive(FerroModel)]
Expand description

Derive macro for reducing SeaORM model boilerplate

Generates create builder, update builder, and convenience methods for Ferro models. Apply to a SeaORM Model struct to get:

  • Model::query() - Start a new QueryBuilder
  • Model::create() - Get a builder for inserting new records
  • model.update() - Get an UpdateBuilder for selective field updates
  • model.delete() - Delete the record

§Example

use ferro::FerroModel;
use sea_orm::entity::prelude::*;

#[derive(Clone, Debug, DeriveEntityModel, FerroModel)]
#[sea_orm(table_name = "users")]
pub struct Model {
    #[sea_orm(primary_key)]
    pub id: i32,
    pub name: String,
    pub email: String,
    pub bio: Option<String>,
}

// Create a new record
let user = User::create()
    .set_name("John")
    .set_email("john@example.com")
    .insert()
    .await?;

// Update specific fields only (unchanged fields are not sent to DB)
let updated = user
    .update()
    .set_name("John Doe")
    .set_bio("Developer")
    .save()
    .await?;

// Clear an optional field to NULL
let updated = updated
    .update()
    .clear_bio()
    .save()
    .await?;

// Query records
let users = User::query()
    .filter(Column::Name.contains("John"))
    .all()
    .await?;