Scopes
10/30/24Less than 1 minute
Scopes
While Sea-ORM doesn't have a built-in scope system like some ORMs, you can create reusable query fragments using functions.
Reusable Query Filters
// Scope: Active users (not deleted, status = 1)
pub fn active_users() -> Condition {
Condition::all()
.add(entity::sys_user::Column::DeletedAt.is_null())
.add(entity::sys_user::Column::Status.eq(1))
}
// Scope: By department
pub fn by_dept(dept_id: i64) -> Condition {
Condition::all()
.add(entity::sys_user::Column::DeptId.eq(dept_id))
}
// Usage
let users = entity::sys_user::Entity::find()
.filter(active_users())
.filter(by_dept(10))
.all(&db).await?;Scope Composition
pub fn user_scopes() -> entity::sys_user::Entity {
entity::sys_user::Entity::find()
.filter(active_users())
}
// Chained with additional filters
let users = user_scopes()
.filter(entity::sys_user::Column::Username.like("%admin%"))
.all(&db).await?;