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);