internal override bool Apply(ExpressionMetadataChainItem expressionMetadataChainItem, ModelQueryBuildConfig config) { if (expressionMetadataChainItem.Expression.Arguments.Count > 1 && !base.Apply(expressionMetadataChainItem, config)) { return(false); } var aggregationColumnName = RepositoryExpressionUtilities.GetAnyColumnName(); config.SelectQuery.Columns.Items.Clear(); config.SelectQuery.Columns.Items.Add(aggregationColumnName, new SelectQueryColumn() { Expression = new ColumnExpression() { AggregationType = AggregationType.Count, ExpressionType = EntitySchemaQueryExpressionType.Function, FunctionType = FunctionType.Aggregation, FunctionArgument = new ColumnExpression() { ExpressionType = EntitySchemaQueryExpressionType.SchemaColumn, ColumnPath = "Id" } } }); return(true); }
internal override bool Apply(ExpressionMetadataChainItem expression, ModelQueryBuildConfig config) { var filter = ModelQueryFilterBuilder.GenerateFilter(expression.ExpressionMetadata); config.SelectQuery.Filters.Items.Add(Guid.NewGuid().ToString(), filter); return(true); }
private static bool ApplyExpressionChainItemOnSelectQuery(ExpressionMetadataChainItem expressionChainItem, ModelQueryBuildConfig selectQuery) { var expressionApplier = ExpressionApplier.GetApplier(expressionChainItem.Expression.Method.Name); expressionChainItem.IsAppliedToQuery = expressionApplier?.Apply(expressionChainItem, selectQuery) ?? false; return(expressionChainItem.IsAppliedToQuery); }
internal override bool Apply(ExpressionMetadataChainItem expressionMetadataChainItem, ModelQueryBuildConfig config) { var methodName = expressionMetadataChainItem.Expression.Method.Name; var aggregationColumnName = RepositoryExpressionUtilities.GetAggregationColumnName(methodName); config.SelectQuery.Columns.Items.Clear(); config.SelectQuery.Columns.Items.Add(aggregationColumnName, GetAggregationColumn(methodName, expressionMetadataChainItem.ExpressionMetadata.Parameter.ColumnPath)); return(true); }
internal override bool Apply(ExpressionMetadataChainItem expressionMetadataChainItem, ModelQueryBuildConfig config) { if (expressionMetadataChainItem.Expression.Arguments.Count <= 1 || !base.Apply(expressionMetadataChainItem, config)) { return(false); } config.SelectQuery.RowCount = 1; return(true); }
internal override bool Apply(ExpressionMetadataChainItem expressionMetadataChainItem, ModelQueryBuildConfig config) { if (expressionMetadataChainItem.ExpressionMetadata.NodeType != ExpressionMetadataNodeType.Property) { return(false); } var rowCount = (int)(expressionMetadataChainItem?.ExpressionMetadata?.Parameter?.Value ?? 0); config.SelectQuery.RowCount = Math.Min(ModelQueryBuildConfig.MaxRowsCount, rowCount); return(true); }
internal override bool Apply(ExpressionMetadataChainItem expressionMetadataChainItem, ModelQueryBuildConfig config) { if (expressionMetadataChainItem.ExpressionMetadata.NodeType != ExpressionMetadataNodeType.Column) { return(false); } var orderedColumn = GetOrAddColumn(config, expressionMetadataChainItem.ExpressionMetadata.Parameter.ColumnPath); ApplyOrderDirectionAndOrderPosition(orderedColumn, expressionMetadataChainItem.Expression, config); return(true); }
internal abstract bool Apply(ExpressionMetadataChainItem expression, ModelQueryBuildConfig config);