sz_rust_orm_facade/data_scope/
ext.rs1use crate::data_scope::context::DataScopeContext;
7use crate::data_scope::error::DataScopeError;
8use crate::data_scope::evaluator::DataScopeEvaluator;
9use crate::data_scope::rule::DataScopeRule;
10use crate::repository::WhereCondition;
11
12#[async_trait::async_trait]
17pub trait DataScopeExt: Sized {
18 fn with_data_scope_conditions(self, conditions: &[WhereCondition]) -> Self;
20
21 async fn data_scope_async(
26 self,
27 ctx: &DataScopeContext,
28 rule: &DataScopeRule,
29 evaluator: &dyn DataScopeEvaluator,
30 ) -> Result<Self, DataScopeError> {
31 let conditions = evaluator.evaluate(ctx, rule).await?;
32 Ok(self.with_data_scope_conditions(&conditions))
33 }
34}