type_bridge.crud.role_lookup¶
role_lookup
¶
Role-player lookup filter parsing utilities.
This module provides parsing for Django-style lookup filters on role-player attributes in relation queries.
Example
Employment.manager(db).filter(employee__age__gt=30, employer__name__contains="Tech")
parse_role_lookup_filters
¶
Parse Django-style lookup filters including role-player attributes.
Handles patterns like: - employee__age__gt=30 -> role lookup expression - employee__name="Alice" -> role lookup exact match - employee=alice -> exact role player match (entity instance) - position="Engineer" -> relation attribute filter - salary__gt=85000 -> relation attribute lookup expression
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_class
|
type[Relation]
|
The Relation class being queried |
required |
filters
|
dict[str, Any]
|
Raw filter keyword arguments |
required |
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Tuple of: |
dict[str, Any]
|
|
dict[str, list[RolePlayerExpr]]
|
|
list[Expression]
|
|
tuple[dict[str, Any], dict[str, Any], dict[str, list[RolePlayerExpr]], list[Expression]]
|
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If unknown role/attribute or invalid lookup operator |
Source code in type_bridge/crud/role_lookup.py
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | |