Class BaseFilterExpressionParser

Assembly: redb.Core.dll

Base class for parsing LINQ expressions to FilterExpression.
Contains all DB-agnostic logic. DB-specific implementations override CheckProOnlyFeatures.

public abstract class BaseFilterExpressionParser : IFilterExpressionParser

Inheritance

ObjectBaseFilterExpressionParser

Implements

Derived

Methods

BuildPropertyPath(MemberExpression)

Build property path from member expression chain.

protected (string Path, PropertyFunction? Function) BuildPropertyPath(MemberExpression memberExpression)

CheckPathDepth(int, string)

Check property path nesting depth. FREE version limits to 2 levels.

protected virtual void CheckPathDepth(int depth, string fullPath)

CheckProOnlyFeatures(Expression, string)

DB-specific check for Pro-only features. Override in implementations.

protected abstract void CheckProOnlyFeatures(Expression body, string context)

CreateArithmeticExpression(BinaryExpression)

protected ValueExpression CreateArithmeticExpression(BinaryExpression binary)

CreateCustomFunctionExpression(MethodCallExpression)

protected ValueExpression CreateCustomFunctionExpression(MethodCallExpression method)

CreateDateTimeFunctionExpression(MemberExpression)

protected ValueExpression CreateDateTimeFunctionExpression(MemberExpression member)

CreateExtendedComparison(BinaryExpression, ComparisonOperator, ValueExpression?, ValueExpression?)

Extended comparison with ValueExpression (arithmetic/functions).

protected virtual FilterExpression CreateExtendedComparison(BinaryExpression binary, ComparisonOperator op, ValueExpression? leftValueExpr, ValueExpression? rightValueExpr)

CreateFunctionCallExpression(MethodCallExpression)

protected ValueExpression CreateFunctionCallExpression(MethodCallExpression method)

EvaluateExpression(Expression)

Evaluate expression to get constant value.

protected object? EvaluateExpression(Expression expression)

EvaluateStringComparison(Expression)

protected StringComparison EvaluateStringComparison(Expression comparisonExpression)

ExtractDictionaryIndexerProperty(MethodCallExpression)

Extract property from Dictionary indexer.

protected PropertyInfo ExtractDictionaryIndexerProperty(MethodCallExpression methodCall)

ExtractProperty(Expression)

Extract property info from expression.

protected PropertyInfo ExtractProperty(Expression expression)

ExtractPropertyAndValue(BinaryExpression)

Extract property and value from binary expression.

protected (PropertyInfo Property, object? Value) ExtractPropertyAndValue(BinaryExpression binary)

ExtractPropertyFromMember(MemberExpression)

Extract PropertyInfo from MemberExpression.

protected PropertyInfo ExtractPropertyFromMember(MemberExpression member)

ExtractValueExpression(Expression)

Recursively extract ValueExpression from any Expression.

protected ValueExpression ExtractValueExpression(Expression expression)

IsArithmeticExpression(BinaryExpression)

protected bool IsArithmeticExpression(BinaryExpression binary)

IsCustomFunctionCall(MethodCallExpression)

protected bool IsCustomFunctionCall(MethodCallExpression method)

IsDateTimePropertyAccess(MemberExpression)

protected bool IsDateTimePropertyAccess(MemberExpression member)

IsDictionaryType(Type?)

protected bool IsDictionaryType(Type? type)

IsIgnoreCaseComparison(StringComparison)

protected bool IsIgnoreCaseComparison(StringComparison comparison)

IsProFunctionCall(MethodCallExpression)

protected bool IsProFunctionCall(MethodCallExpression method)

IsPropertyAccess(Expression)

Check if expression is property access.

protected bool IsPropertyAccess(Expression expression)

ParseFilter<TProps>(Expression<Func<TProps, bool>>)

Parse LINQ predicate to FilterExpression for Props fields.

public virtual FilterExpression ParseFilter<TProps>(Expression<Func<TProps, bool>> predicate) where TProps : class

ParseRedbFilter(Expression<Func<IRedbObject, bool>>)

Parse LINQ predicate for base RedbObject fields (id, name, parent_id, etc.).

public FilterExpression ParseRedbFilter(Expression<Func<IRedbObject, bool>> predicate)

ReferencesLambdaParameter(Expression?)

Check if expression references lambda parameter.

protected bool ReferencesLambdaParameter(Expression? expr)

TryExtractValueExpression(Expression)

Try to extract ValueExpression from Expression (arithmetic, functions).

protected virtual ValueExpression? TryExtractValueExpression(Expression expression)

VisitArithmeticComparisonExpression(BinaryExpression)

Arithmetic expression as top-level is not allowed.

protected virtual FilterExpression VisitArithmeticComparisonExpression(BinaryExpression binary)

VisitBinaryExpression(BinaryExpression)

Binary expression visitor (AND, OR, comparisons, arithmetic).

protected virtual FilterExpression VisitBinaryExpression(BinaryExpression binary)

VisitBooleanMemberExpression(MemberExpression, bool)

Handles boolean member expressions like p.IsActive or !p.IsActive.

protected virtual FilterExpression VisitBooleanMemberExpression(MemberExpression member, bool negated)

VisitCollectionContains(MethodCallExpression)

Collection.Contains visitor.

protected virtual FilterExpression VisitCollectionContains(MethodCallExpression method)

VisitComparisonExpression(BinaryExpression, ComparisonOperator)

Comparison expression visitor.

protected virtual FilterExpression VisitComparisonExpression(BinaryExpression binary, ComparisonOperator op)

VisitConstantBooleanExpression(ConstantExpression)

Constant boolean expression visitor.

protected virtual FilterExpression VisitConstantBooleanExpression(ConstantExpression constant)

VisitDictionaryContainsKey(MethodCallExpression)

Dictionary.ContainsKey visitor.

protected virtual FilterExpression VisitDictionaryContainsKey(MethodCallExpression method)

VisitEnumerableAny(MethodCallExpression)

Enumerable.Any visitor.

protected virtual FilterExpression VisitEnumerableAny(MethodCallExpression method)

VisitEnumerableContains(MethodCallExpression)

Enumerable.Contains visitor.

protected virtual FilterExpression VisitEnumerableContains(MethodCallExpression method)

VisitExpression(Expression)

Main visitor dispatcher.

protected virtual FilterExpression VisitExpression(Expression expression)

VisitMethodCallExpression(MethodCallExpression)

Method call expression visitor.

protected virtual FilterExpression VisitMethodCallExpression(MethodCallExpression method)

VisitStringMethodWithComparison(MethodCallExpression, ComparisonOperator, ComparisonOperator)

String methods with StringComparison support.

protected virtual FilterExpression VisitStringMethodWithComparison(MethodCallExpression method, ComparisonOperator caseSensitiveOp, ComparisonOperator ignoreCaseOp)

VisitUnaryExpression(UnaryExpression)

Unary expression visitor (NOT).

protected virtual FilterExpression VisitUnaryExpression(UnaryExpression unary)