Logo

Modeles & Schemas

Definir un modele, types, contraintes, relations, migrations.

macro model! — tous les types entities/produit.rs
use runique::prelude::*;

model! {
    Produit,
    table: "produit",
    pk: id => i32,
    fields: {
        // Types de base
        nom:        String   [required, max_len(255)],
        slug:       String   [required, unique, max_len(255)],
        description: text    [nullable],
        prix:       f64      [required],
        stock:      i32      [required, default(0)],
        actif:      bool     [required, default(true)],

        // Cle etrangere
        categorie_id: i32    [required, fk(categorie.id, cascade)],

        // Timestamps automatiques
        created_at: datetime [auto_now],
        updated_at: datetime [auto_now_update],
    }
}
macro model! — tous les types entities/produit.rs
use runique::prelude::*;

model! {
    Produit,
    table: "produit",
    pk: id => i32,
    fields: {
        // Types de base
        nom:        String   [required, max_len(255)],
        slug:       String   [required, unique, max_len(255)],
        description: text    [nullable],
        prix:       f64      [required],
        stock:      i32      [required, default(0)],
        actif:      bool     [required, default(true)],

        // Cle etrangere
        categorie_id: i32    [required, fk(categorie.id, cascade)],

        // Timestamps automatiques
        created_at: datetime [auto_now],
        updated_at: datetime [auto_now_update],
    }
}
Modificateurs disponibles
[required]               champ NOT NULL
[nullable]               champ NULL
[unique]                 contrainte UNIQUE
[max_len(N)]             VARCHAR(N)
[default(valeur)]        valeur par defaut SQL
[auto_now]               CURRENT_TIMESTAMP a la creation
[auto_now_update]        CURRENT_TIMESTAMP a chaque modification
[fk(table.col, cascade)] cle etrangere avec ON DELETE CASCADE
[fk(table.col, null)]    cle etrangere avec ON DELETE SET NULL
Modificateurs disponibles
[required]               champ NOT NULL
[nullable]               champ NULL
[unique]                 contrainte UNIQUE
[max_len(N)]             VARCHAR(N)
[default(valeur)]        valeur par defaut SQL
[auto_now]               CURRENT_TIMESTAMP a la creation
[auto_now_update]        CURRENT_TIMESTAMP a chaque modification
[fk(table.col, cascade)] cle etrangere avec ON DELETE CASCADE
[fk(table.col, null)]    cle etrangere avec ON DELETE SET NULL
Activer le manager objects entities/article.rs
model! {
    Article,
    table: "article",
    pk: id => i32,
    fields: { title: String [required] }
}

// Active Article::objects.all(), .filter(), .get(), etc.
impl_objects!(Entity);
Activer le manager objects entities/article.rs
model! {
    Article,
    table: "article",
    pk: id => i32,
    fields: { title: String [required] }
}

// Active Article::objects.all(), .filter(), .get(), etc.
impl_objects!(Entity);