Skip to content

Commit 7285ac8

Browse files
committed
Split big property on multiple
1 parent 562c4a9 commit 7285ac8

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

futuramaapi/routers/services/characters/list_characters.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from fastapi_pagination import Page
44
from fastapi_pagination.ext.sqlalchemy import paginate
55
from pydantic import Field
6-
from sqlalchemy import ColumnElement, Select, select
6+
from sqlalchemy import ColumnElement, Select, UnaryExpression, select
77

88
from futuramaapi.repositories.models import CharacterModel
99
from futuramaapi.routers.services import BaseSessionService
@@ -28,8 +28,7 @@ class ListCharactersService(BaseSessionService[Page[ListCharactersResponse]]):
2828
)
2929

3030
@property
31-
def statement(self) -> Select[tuple[CharacterModel]]:
32-
statement: Select[tuple[CharacterModel]] = select(CharacterModel)
31+
def __where(self) -> list[ColumnElement[bool]]:
3332
where: list[ColumnElement[bool]] = []
3433

3534
if self.gender is not None:
@@ -53,13 +52,20 @@ def statement(self) -> Select[tuple[CharacterModel]]:
5352
if self.query is not None:
5453
where.append(CharacterModel.name.ilike(self.query))
5554

55+
return where
56+
57+
@property
58+
def __order_by(self) -> UnaryExpression[CharacterModel]:
5659
order_by = CharacterModel.str_to_field(self.order_by)
5760
if self.direction == "asc":
58-
order_by = order_by.asc()
59-
else:
60-
order_by = order_by.desc()
61+
return order_by.asc()
6162

62-
return statement.where(*where).order_by(order_by)
63+
return order_by.desc()
64+
65+
@property
66+
def statement(self) -> Select[tuple[CharacterModel]]:
67+
statement: Select[tuple[CharacterModel]] = select(CharacterModel)
68+
return statement.where(*self.__where).order_by(self.__order_by)
6369

6470
async def process(self, *args, **kwargs) -> Page[ListCharactersResponse]:
6571
return await paginate(

0 commit comments

Comments
 (0)