ascetic_ddd.faker.domain.query.operators¶
Query operators for MongoDB-like query syntax.
Operators: - $eq: equality check - $ne: not equal - $gt, $gte, $lt, $lte: comparison operators - $in: value in list - $is_null: null check - $rel: constraints for related aggregate - $or: logical OR of expressions
- Multiple operators at same level are implicit AND:
{‘$gt’: 5, ‘$lt’: 10} -> AndOperator((ComparisonOperator(‘$gt’, 5), ComparisonOperator(‘$lt’, 10)))
Examples
{‘$eq’: 27} # scalar value {‘$ne’: ‘deleted’} # not equal {‘$gt’: 5, ‘$lt’: 10} # range (implicit AND) {‘$in’: [‘active’, ‘pending’]} # value in list {‘$is_null’: True} # null check {‘$is_null’: False} # not null check {‘tenant_id’: {‘$eq’: 15}, ‘local_id’: {‘$eq’: 27}} # composite PK {‘$rel’: {‘is_active’: {‘$eq’: True}}} # related aggregate criteria {‘$or’: [{‘status’: {‘$eq’: ‘active’}}, {‘status’: {‘$eq’: ‘pending’}}]}
Classes
|
Implicit AND of operators at the same level. |
|
Comparison operator: {'$ne': value}, {'$gt': value}, {'$gte': value}, {'$lt': value}, {'$lte': value} |
|
Composite query: {'field1': op1, 'field2': op2, ...} |
|
Equality operator: {'$eq': value} |
Base interface for all query operators. |
|
Visitor for traversing query operator tree. |
|
|
In operator: {'$in': [value1, value2, ...]} |
|
Null check operator: {'$is_null': True} or {'$is_null': False} |
|
Logical OR: {'$or': [expr1, expr2, ...]} |
|
Relation operator: {'$rel': {'field': {'$eq': value}, ...}} |
Exceptions
|
Raised when merging two operators with incompatible values. |
- class ascetic_ddd.faker.domain.query.operators.IQueryOperator[source]¶
Bases:
objectBase interface for all query operators.
- class ascetic_ddd.faker.domain.query.operators.IQueryVisitor[source]¶
Bases:
Generic[T]Visitor for traversing query operator tree.
- abstractmethod visit_comparison(op)[source]¶
- Return type:¶
TypeVar(T)- Parameters:¶
- op : ComparisonOperator¶
- exception ascetic_ddd.faker.domain.query.operators.MergeConflict(existing_value, new_value)[source]¶
Bases:
ExceptionRaised when merging two operators with incompatible values.
- class ascetic_ddd.faker.domain.query.operators.EqOperator(value)[source]¶
Bases:
IQueryOperatorEquality operator: {‘$eq’: value}
Represents exact value match. Value can be: - Primitive (int, str, bool, None) - IQueryOperator (parsed subtree, before normalization)
- value¶
- class ascetic_ddd.faker.domain.query.operators.ComparisonOperator(op, value)[source]¶
Bases:
IQueryOperatorComparison operator: {‘$ne’: value}, {‘$gt’: value}, {‘$gte’: value}, {‘$lt’: value}, {‘$lte’: value}
Supported ops: ‘$ne’, ‘$gt’, ‘$gte’, ‘$lt’, ‘$lte’
-
SUPPORTED_OPS =
frozenset({'$gt', '$gte', '$lt', '$lte', '$ne'})¶
- op¶
- value¶
-
SUPPORTED_OPS =
- class ascetic_ddd.faker.domain.query.operators.InOperator(values)[source]¶
Bases:
IQueryOperatorIn operator: {‘$in’: [value1, value2, …]}
Represents value membership check.
- values¶
- class ascetic_ddd.faker.domain.query.operators.IsNullOperator(value)[source]¶
Bases:
IQueryOperatorNull check operator: {‘$is_null’: True} or {‘$is_null’: False}
When value=True, matches None values. When value=False, matches non-None values.
- value¶
- class ascetic_ddd.faker.domain.query.operators.AndOperator(operands)[source]¶
Bases:
IQueryOperatorImplicit AND of operators at the same level.
- Created by parser when multiple operators appear at the same level:
{‘$gt’: 5, ‘$lt’: 10} -> AndOperator((ComparisonOperator(‘$gt’, 5), ComparisonOperator(‘$lt’, 10)))
Not exposed as ‘$and’ in query syntax.
- Parameters:¶
- operands : tuple[IQueryOperator, ...]¶
- operands¶
- class ascetic_ddd.faker.domain.query.operators.OrOperator(operands)[source]¶
Bases:
IQueryOperatorLogical OR: {‘$or’: [expr1, expr2, …]}
Each operand is an IQueryOperator.
- Parameters:¶
- operands : tuple[IQueryOperator, ...]¶
- operands¶
- class ascetic_ddd.faker.domain.query.operators.RelOperator(query)[source]¶
Bases:
IQueryOperatorRelation operator: {‘$rel’: {‘field’: {‘$eq’: value}, …}}
Represents constraints on a related aggregate. Used by ReferenceProvider to specify criteria for the referenced aggregate. Wraps a CompositeQuery with the semantic meaning “these constraints are for a related aggregate, not for the current one”.
- Parameters:¶
- query : CompositeQuery¶
- query¶
- class ascetic_ddd.faker.domain.query.operators.CompositeQuery(fields)[source]¶
Bases:
IQueryOperatorComposite query: {‘field1’: op1, ‘field2’: op2, …}
Represents a query with multiple field constraints. Used for composite primary keys or multi-field criteria.
- Parameters:¶
- fields : dict[str, IQueryOperator]¶
- fields¶