VORKOUT-7 #9
@ -11,6 +11,22 @@ from api.db.tables.account import account_table
|
||||
from api.schemas.account.account import User
|
||||
from api.schemas.endpoints.account import UserUpdate, Role, Status
|
||||
|
||||
async def get_all_users_login_and_id(connection: AsyncConnection) -> Optional[User]:
|
||||
"""
|
||||
Получает id и login всех юзеров
|
||||
ivan.dev marked this conversation as resolved
Outdated
|
||||
"""
|
||||
query = select(account_table.c.id, account_table.c.login)
|
||||
|
||||
# Выполняем запрос
|
||||
result = await connection.execute(query)
|
||||
|
||||
ivan.dev marked this conversation as resolved
Outdated
vlad.dev
commented
Давай все-таки через Давай все-таки через `offset` делать, а то вычислять по `id` как-то сомнительно выглядит
|
||||
# Получаем все результаты
|
||||
users = result.fetchall()
|
||||
ivan.dev marked this conversation as resolved
Outdated
mikhail.dev
commented
1. Тебе нужен адаптер для `list[AllUser]`. В текущем виде это не имеет смысла, это равносильно простому созданию класса по кейвордам.
2. В документации написано, что такие конструкции лучше создавать один раз, соответственно стоит их делать глобальными тогда.
|
||||
|
||||
user_list = [{'id': user.id, 'login': user.login} for user in users]
|
||||
|
||||
return user_list
|
||||
|
||||
|
||||
ivan.dev marked this conversation as resolved
Outdated
vlad.dev
commented
Можно вместо этого использовать Можно вместо этого использовать `parse_obj_as` из `pydantic.tools`, чтобы парсить запрос сразу из бд в модель `User`
Можешь посмотреть в [репозитории](https://gitea.heado.ru/dinar/backend/src/branch/master/backend/db/logic/issues.py#L93) бэка
mikhail.dev
commented
`parse_obj_as` устарело в Pydantic 2, не используйте это. Для подобных целей создали [TypeAdapter](https://docs.pydantic.dev/2.11/concepts/type_adapter/).
|
||||
async def get_user_id(connection: AsyncConnection, id: int) -> Optional[User]:
|
||||
"""
|
||||
|
@ -14,7 +14,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection
|
||||
|
||||
from api.db.connection.session import get_connection_dep
|
||||
|
||||
from api.db.logic.account import get_user_id, update_user_id, create_user,get_user_login
|
||||
from api.db.logic.account import get_user_id, update_user_id, create_user,get_user_login,get_all_users_login_and_id
|
||||
|
||||
from api.schemas.account.account import User,Status
|
||||
from api.schemas.endpoints.account import UserUpdate
|
||||
@ -30,6 +30,26 @@ api_router = APIRouter(
|
||||
)
|
||||
|
||||
|
||||
@api_router.get("/")
|
||||
async def get_all_account(
|
||||
|
||||
request: Request,
|
||||
connection: AsyncConnection = Depends(get_connection_dep)
|
||||
):
|
||||
|
||||
|
||||
current_user = request.state.current_user
|
||||
authorize_user = await db_user_role_validation(connection, current_user)
|
||||
|
||||
user_list = await get_all_users_login_and_id(connection)
|
||||
|
||||
if user_list is None:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Accounts not found")
|
||||
|
||||
return user_list
|
||||
|
||||
|
||||
@api_router.get("/{user_id}")
|
||||
async def get_account(user_id: int,
|
||||
|
Loading…
Reference in New Issue
Block a user
Надо переименовать метод и изменить описание, сейчас же не только
login
иid