57
57
}
58
58
59
59
60
- async def get_sqlalchemy_filter (
60
+ def get_sqlalchemy_filter (
61
61
operator : str , value : Any , allow_arithmetic : bool = True
62
62
) -> Callable [[str ], Callable ] | None :
63
63
if operator in ['in' , 'not_in' , 'between' ]:
@@ -82,55 +82,55 @@ async def get_sqlalchemy_filter(
82
82
return sqlalchemy_filter
83
83
84
84
85
- async def get_column (model : Type [Model ] | AliasedClass , field_name : str ):
85
+ def get_column (model : Type [Model ] | AliasedClass , field_name : str ):
86
86
column = getattr (model , field_name , None )
87
87
if column is None :
88
88
raise ModelColumnError (f'Column { field_name } is not found in { model } ' )
89
89
return column
90
90
91
91
92
- async def parse_filters (model : Type [Model ] | AliasedClass , ** kwargs ) -> list [ColumnElement ]:
92
+ def parse_filters (model : Type [Model ] | AliasedClass , ** kwargs ) -> list [ColumnElement ]:
93
93
filters = []
94
94
95
95
for key , value in kwargs .items ():
96
96
if '__' in key :
97
97
field_name , op = key .rsplit ('__' , 1 )
98
- column = await get_column (model , field_name )
98
+ column = get_column (model , field_name )
99
99
if op == 'or' :
100
100
or_filters = [
101
101
sqlalchemy_filter (column )(or_value )
102
102
for or_op , or_value in value .items ()
103
- if (sqlalchemy_filter := await get_sqlalchemy_filter (or_op , or_value )) is not None
103
+ if (sqlalchemy_filter := get_sqlalchemy_filter (or_op , or_value )) is not None
104
104
]
105
105
filters .append (or_ (* or_filters ))
106
106
elif isinstance (value , dict ) and {'value' , 'condition' }.issubset (value ):
107
107
advanced_value = value ['value' ]
108
108
condition = value ['condition' ]
109
- sqlalchemy_filter = await get_sqlalchemy_filter (op , advanced_value )
109
+ sqlalchemy_filter = get_sqlalchemy_filter (op , advanced_value )
110
110
if sqlalchemy_filter is not None :
111
111
condition_filters = []
112
112
for cond_op , cond_value in condition .items ():
113
- condition_filter = await get_sqlalchemy_filter (cond_op , cond_value , allow_arithmetic = False )
113
+ condition_filter = get_sqlalchemy_filter (cond_op , cond_value , allow_arithmetic = False )
114
114
condition_filters .append (
115
115
condition_filter (sqlalchemy_filter (column )(advanced_value ))(cond_value )
116
116
if cond_op != 'between'
117
117
else condition_filter (sqlalchemy_filter (column )(advanced_value ))(* cond_value )
118
118
)
119
119
filters .append (and_ (* condition_filters ))
120
120
else :
121
- sqlalchemy_filter = await get_sqlalchemy_filter (op , value )
121
+ sqlalchemy_filter = get_sqlalchemy_filter (op , value )
122
122
if sqlalchemy_filter is not None :
123
123
filters .append (
124
124
sqlalchemy_filter (column )(value ) if op != 'between' else sqlalchemy_filter (column )(* value )
125
125
)
126
126
else :
127
- column = await get_column (model , key )
127
+ column = get_column (model , key )
128
128
filters .append (column == value )
129
129
130
130
return filters
131
131
132
132
133
- async def apply_sorting (
133
+ def apply_sorting (
134
134
model : Type [Model ] | AliasedClass ,
135
135
stmt : Select ,
136
136
sort_columns : str | list [str ],
@@ -170,7 +170,7 @@ async def apply_sorting(
170
170
validated_sort_orders = ['asc' ] * len (sort_columns ) if not sort_orders else sort_orders
171
171
172
172
for idx , column_name in enumerate (sort_columns ):
173
- column = await get_column (model , column_name )
173
+ column = get_column (model , column_name )
174
174
order = validated_sort_orders [idx ]
175
175
stmt = stmt .order_by (asc (column ) if order == 'asc' else desc (column ))
176
176
0 commit comments