Skip to main content

scopes

Macro scopes 

Source
macro_rules! scopes {
    (
        $trait_name:ident for $model:ty {
            $(
                fn $scope:ident ( $q:ident $(, $arg:ident : $arg_ty:ty )* )
                    -> $body:expr
            );* $(;)?
        }
    ) => { ... };
}
Expand description

Define chainable Eloquent-style local scopes on a model’s query builder.

Mirrors Laravel’s scopeActive($query) / scopePublished($query) pattern. Generates a user-named trait and an impl for QueryBuilder<Model> so scopes chain directly: User::query().active().verified().get(pool).

§Usage

use anvilforge::cast::scopes;

scopes!(UserScopes for User {
    fn active(q) -> q.where_eq(User::columns().active(), true);
    fn verified(q) -> q.where_not_null(User::columns().email_verified_at());
    fn older_than(q, days: i32) -> q.where_lt(User::columns().created_at(), cutoff(days));
});

// In handler code:
use crate::app::Models::UserScopes;
let active_verified = User::query().active().verified().get(pool).await?;