Skip to content

Commit 823e181

Browse files
authored
Update some async functions definition (#13)
1 parent c78ce44 commit 823e181

File tree

2 files changed

+17
-17
lines changed

2 files changed

+17
-17
lines changed

sqlalchemy_crud_plus/crud.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ async def select_model_by_column(self, session: AsyncSession, **kwargs) -> Model
7474
:param kwargs: Query expressions.
7575
:return:
7676
"""
77-
filters = await parse_filters(self.model, **kwargs)
77+
filters = parse_filters(self.model, **kwargs)
7878
stmt = select(self.model).where(*filters)
7979
query = await session.execute(stmt)
8080
return query.scalars().first()
@@ -87,7 +87,7 @@ async def select_models(self, session: AsyncSession, **kwargs) -> Sequence[Row[A
8787
:param kwargs: Query expressions.
8888
:return:
8989
"""
90-
filters = await parse_filters(self.model, **kwargs)
90+
filters = parse_filters(self.model, **kwargs)
9191
stmt = select(self.model).where(*filters)
9292
query = await session.execute(stmt)
9393
return query.scalars().all()
@@ -103,9 +103,9 @@ async def select_models_order(
103103
:param sort_orders: more details see apply_sorting
104104
:return:
105105
"""
106-
filters = await parse_filters(self.model, **kwargs)
106+
filters = parse_filters(self.model, **kwargs)
107107
stmt = select(self.model).where(*filters)
108-
stmt_sort = await apply_sorting(self.model, stmt, sort_columns, sort_orders)
108+
stmt_sort = apply_sorting(self.model, stmt, sort_columns, sort_orders)
109109
query = await session.execute(stmt_sort)
110110
return query.scalars().all()
111111

@@ -149,7 +149,7 @@ async def update_model_by_column(
149149
:param kwargs: Query expressions.
150150
:return:
151151
"""
152-
filters = await parse_filters(self.model, **kwargs)
152+
filters = parse_filters(self.model, **kwargs)
153153
total_count = await count(session, self.model, filters)
154154
if not allow_multiple and total_count > 1:
155155
raise MultipleResultsError(f'Only one record is expected to be update, found {total_count} records.')
@@ -198,7 +198,7 @@ async def delete_model_by_column(
198198
:param deleted_flag_column: Specify the flag column for logical deletion
199199
:return:
200200
"""
201-
filters = await parse_filters(self.model, **kwargs)
201+
filters = parse_filters(self.model, **kwargs)
202202
total_count = await count(session, self.model, filters)
203203
if not allow_multiple and total_count > 1:
204204
raise MultipleResultsError(f'Only one record is expected to be delete, found {total_count} records.')

sqlalchemy_crud_plus/utils.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
}
5858

5959

60-
async def get_sqlalchemy_filter(
60+
def get_sqlalchemy_filter(
6161
operator: str, value: Any, allow_arithmetic: bool = True
6262
) -> Callable[[str], Callable] | None:
6363
if operator in ['in', 'not_in', 'between']:
@@ -82,55 +82,55 @@ async def get_sqlalchemy_filter(
8282
return sqlalchemy_filter
8383

8484

85-
async def get_column(model: Type[Model] | AliasedClass, field_name: str):
85+
def get_column(model: Type[Model] | AliasedClass, field_name: str):
8686
column = getattr(model, field_name, None)
8787
if column is None:
8888
raise ModelColumnError(f'Column {field_name} is not found in {model}')
8989
return column
9090

9191

92-
async def parse_filters(model: Type[Model] | AliasedClass, **kwargs) -> list[ColumnElement]:
92+
def parse_filters(model: Type[Model] | AliasedClass, **kwargs) -> list[ColumnElement]:
9393
filters = []
9494

9595
for key, value in kwargs.items():
9696
if '__' in key:
9797
field_name, op = key.rsplit('__', 1)
98-
column = await get_column(model, field_name)
98+
column = get_column(model, field_name)
9999
if op == 'or':
100100
or_filters = [
101101
sqlalchemy_filter(column)(or_value)
102102
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
104104
]
105105
filters.append(or_(*or_filters))
106106
elif isinstance(value, dict) and {'value', 'condition'}.issubset(value):
107107
advanced_value = value['value']
108108
condition = value['condition']
109-
sqlalchemy_filter = await get_sqlalchemy_filter(op, advanced_value)
109+
sqlalchemy_filter = get_sqlalchemy_filter(op, advanced_value)
110110
if sqlalchemy_filter is not None:
111111
condition_filters = []
112112
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)
114114
condition_filters.append(
115115
condition_filter(sqlalchemy_filter(column)(advanced_value))(cond_value)
116116
if cond_op != 'between'
117117
else condition_filter(sqlalchemy_filter(column)(advanced_value))(*cond_value)
118118
)
119119
filters.append(and_(*condition_filters))
120120
else:
121-
sqlalchemy_filter = await get_sqlalchemy_filter(op, value)
121+
sqlalchemy_filter = get_sqlalchemy_filter(op, value)
122122
if sqlalchemy_filter is not None:
123123
filters.append(
124124
sqlalchemy_filter(column)(value) if op != 'between' else sqlalchemy_filter(column)(*value)
125125
)
126126
else:
127-
column = await get_column(model, key)
127+
column = get_column(model, key)
128128
filters.append(column == value)
129129

130130
return filters
131131

132132

133-
async def apply_sorting(
133+
def apply_sorting(
134134
model: Type[Model] | AliasedClass,
135135
stmt: Select,
136136
sort_columns: str | list[str],
@@ -170,7 +170,7 @@ async def apply_sorting(
170170
validated_sort_orders = ['asc'] * len(sort_columns) if not sort_orders else sort_orders
171171

172172
for idx, column_name in enumerate(sort_columns):
173-
column = await get_column(model, column_name)
173+
column = get_column(model, column_name)
174174
order = validated_sort_orders[idx]
175175
stmt = stmt.order_by(asc(column) if order == 'asc' else desc(column))
176176

0 commit comments

Comments
 (0)