Logo

ORM — Requetes

objects, filter, paginate, relations, create/update/delete.

Requetes de base — SeaORM handler
let db = request.engine.db.clone();

// Tous les enregistrements
let articles = article::Entity::find()
    .all(&*db).await.unwrap_or_default();

// Avec filtre
let article = article::Entity::find()
    .filter(article::Column::Slug.eq("mon-article"))
    .one(&*db).await.unwrap_or(None);

// Par cle primaire
let article = article::Entity::find_by_id(42)
    .one(&*db).await.unwrap_or(None);

// Tri + limite
let recent = article::Entity::find()
    .order_by_desc(article::Column::CreatedAt)
    .limit(10)
    .all(&*db).await.unwrap_or_default();
Requetes de base — SeaORM handler
let db = request.engine.db.clone();

// Tous les enregistrements
let articles = article::Entity::find()
    .all(&*db).await.unwrap_or_default();

// Avec filtre
let article = article::Entity::find()
    .filter(article::Column::Slug.eq("mon-article"))
    .one(&*db).await.unwrap_or(None);

// Par cle primaire
let article = article::Entity::find_by_id(42)
    .one(&*db).await.unwrap_or(None);

// Tri + limite
let recent = article::Entity::find()
    .order_by_desc(article::Column::CreatedAt)
    .limit(10)
    .all(&*db).await.unwrap_or_default();
Style Django — macro impl_objects! handler
// Dans entities/article.rs
model! { Article, ... }
impl_objects!(Entity);   // active le manager objects

// Dans views.rs
let all     = Article::objects.all().all(&db).await?;
let actifs  = Article::objects.filter(Column::Published.eq(true)).all(&db).await?;
let count   = Article::objects.count(&db).await?;
let found   = Article::objects.get(&db, 42).await?;        // Err si absent
let opt     = Article::objects.get_optional(&db, 99).await?; // None si absent
let or_404  = Article::objects.get_or_404(&db, id, &request, "Introuvable").await?;
Style Django — macro impl_objects! handler
// Dans entities/article.rs
model! { Article, ... }
impl_objects!(Entity);   // active le manager objects

// Dans views.rs
let all     = Article::objects.all().all(&db).await?;
let actifs  = Article::objects.filter(Column::Published.eq(true)).all(&db).await?;
let count   = Article::objects.count(&db).await?;
let found   = Article::objects.get(&db, 42).await?;        // Err si absent
let opt     = Article::objects.get_optional(&db, 99).await?; // None si absent
let or_404  = Article::objects.get_or_404(&db, id, &request, "Introuvable").await?;
Create / Update / Delete handler
use sea_orm::ActiveValue::Set;
use crate::entities::article::ActiveModel;

// Creer
let new_article = ActiveModel {
    title:     Set("Mon article".to_string()),
    content:   Set("Contenu...".to_string()),
    published: Set(false),
    ..Default::default()
};
let saved = new_article.insert(&*db).await?;

// Modifier
let mut article: ActiveModel = found.into();
article.title = Set("Nouveau titre".to_string());
article.update(&*db).await?;

// Supprimer
article::Entity::delete_by_id(42).exec(&*db).await?;
Create / Update / Delete handler
use sea_orm::ActiveValue::Set;
use crate::entities::article::ActiveModel;

// Creer
let new_article = ActiveModel {
    title:     Set("Mon article".to_string()),
    content:   Set("Contenu...".to_string()),
    published: Set(false),
    ..Default::default()
};
let saved = new_article.insert(&*db).await?;

// Modifier
let mut article: ActiveModel = found.into();
article.title = Set("Nouveau titre".to_string());
article.update(&*db).await?;

// Supprimer
article::Entity::delete_by_id(42).exec(&*db).await?;