■ ■ ■ ■ ■ ■
v3/crates/engine/src/metadata/resolved/model.rs
skipped 25 lines 26 26 models::{ 27 27 self, EnableAllOrSpecific, ModelGraphQlDefinition, ModelName, ModelV1, OrderableField, 28 28 }, 29 - permissions::{self, ModelPermissionsV1, Role, ValueExpression }, 29 + permissions::{self, ModelPermissionsV1, Role}, 30 30 types::{CustomTypeName, FieldName, OperatorName}, 31 31 }; 32 32 use serde::{Deserialize, Serialize}; skipped 1 lines 34 34 use std::iter; 35 35 36 36 use super::metadata::DataConnectorTypeMappings; 37 + use super::permission::{resolve_value_expression, ValueExpression}; 37 38 use super::relationship::RelationshipTarget; 38 39 use super::typecheck; 39 40 use super::types::{ skipped 532 lines 572 573 ndc_column: field_mapping.column.clone(), 573 574 operator: resolved_operator, 574 575 argument_type, 575 - value: value.clone(), 576 + value: resolve_value_expression ( value.clone() ), 576 577 }) 577 578 } else { 578 579 Err(Error::ModelSourceRequiredForPredicate { skipped 218 lines 797 798 Some(argument) => { 798 799 // if our value is a literal, typecheck it against expected type 799 800 match &argument_preset.value { 800 - ValueExpression::SessionVariable(_) => Ok(()), 801 - ValueExpression::Literal(json_value) => { 801 + open_dds : : permissions : : ValueExpression::SessionVariable(_) => Ok(()), 802 + open_dds : : permissions : : ValueExpression::Literal(json_value) => { 802 803 typecheck::typecheck_qualified_type_reference( 803 804 &argument.argument_type, 804 805 json_value, skipped 8 lines 813 814 } 814 815 })?; 815 816 817 + let resolved_argument_value = 818 + resolve_value_expression(argument_preset.value.clone()); 819 + 816 820 argument_presets.insert( 817 821 argument_preset.argument.clone(), 818 - ( 819 - argument.argument_type.clone(), 820 - argument_preset.value.clone(), 821 - ), 822 + (argument.argument_type.clone(), resolved_argument_value), 822 823 ); 823 824 } 824 825 None => { skipped 599 lines