Добавил фильтр в получение юзеров
This commit is contained in:
parent
1d7e9a67d8
commit
ff3d159e5f
3 changed files with 17 additions and 4 deletions
|
@ -49,7 +49,7 @@ class UserDAO(BaseDAO):
|
|||
except NoResultFound:
|
||||
raise UserNotFoundException
|
||||
|
||||
async def find_all(self) -> SUsers:
|
||||
async def find_all(self, username: str) -> SUsers:
|
||||
query = (
|
||||
select(
|
||||
func.json_build_object(
|
||||
|
@ -67,7 +67,7 @@ class UserDAO(BaseDAO):
|
|||
)
|
||||
)
|
||||
.select_from(Users)
|
||||
.where(Users.role != 100)
|
||||
.filter(Users.role != 100, Users.username.ilike(username))
|
||||
)
|
||||
result = await self.session.execute(query)
|
||||
result = result.scalar_one()
|
||||
|
|
|
@ -32,6 +32,7 @@ from app.users.schemas import (
|
|||
SUsers,
|
||||
SConfirmationData,
|
||||
SUserPassword,
|
||||
SGetUsersFilter,
|
||||
)
|
||||
from app.tasks.tasks import (
|
||||
send_registration_confirmation_email,
|
||||
|
@ -48,9 +49,9 @@ router = APIRouter(prefix="/users", tags=["Пользователи"])
|
|||
status_code=status.HTTP_200_OK,
|
||||
response_model=SUsers,
|
||||
)
|
||||
async def get_all_users(uow=Depends(UnitOfWork)):
|
||||
async def get_all_users(filter_by=Depends(SGetUsersFilter), uow=Depends(UnitOfWork)):
|
||||
async with uow:
|
||||
users = await uow.user.find_all()
|
||||
users = await uow.user.find_all(username=filter_by.username)
|
||||
return users
|
||||
|
||||
|
||||
|
|
|
@ -110,3 +110,15 @@ class SConfirmationData(BaseModel):
|
|||
|
||||
class SInvitationData(BaseModel):
|
||||
chat_id: int
|
||||
|
||||
|
||||
class SGetUsersFilter(BaseModel):
|
||||
username: str | None = None
|
||||
|
||||
@field_validator("username") # noqa
|
||||
@classmethod
|
||||
def validate_username(cls, v):
|
||||
if not v:
|
||||
return "%"
|
||||
else:
|
||||
return f"%{v}%"
|
||||
|
|
Loading…
Add table
Reference in a new issue