fix(api): fix get_user_by_id method

This commit is contained in:
2025-06-25 13:39:16 +05:00
parent 8f5dd07bf5
commit 53bf173373
3 changed files with 39 additions and 44 deletions

View File

@@ -1,16 +1,14 @@
from typing import Optional
import math
from datetime import datetime, timezone
from sqlalchemy import insert, select, func
from sqlalchemy.ext.asyncio import AsyncConnection
from enum import Enum
from typing import Optional
from sqlalchemy import func, insert, select
from sqlalchemy.ext.asyncio import AsyncConnection
from api.db.tables.account import account_table
from api.schemas.account.account import User
from api.schemas.endpoints.account import AllUserResponse, all_user_adapter
from api.schemas.endpoints.account import all_user_adapter, AllUserResponse, UserUpdate
async def get_user_accaunt_page(connection: AsyncConnection, page, limit) -> Optional[AllUserResponse]:
@@ -47,31 +45,28 @@ async def get_user_accaunt_page(connection: AsyncConnection, page, limit) -> Opt
validated_users = all_user_adapter.validate_python(users_data)
return AllUserResponse(users=validated_users, amount_count=total_count, amount_pages=total_pages, current_page=page)
return AllUserResponse(
users=validated_users,
amount_count=total_count,
amount_pages=total_pages,
current_page=page,
limit=limit,
)
async def get_user_by_id(connection: AsyncConnection, id: int) -> Optional[User]:
async def get_user_by_id(connection: AsyncConnection, user_id: int) -> Optional[UserUpdate]:
"""
Получает юзера по id.
"""
query = select(account_table).where(account_table.c.id == id)
query = select(account_table).where(account_table.c.id == user_id)
user_db_cursor = await connection.execute(query)
user_db = user_db_cursor.one_or_none()
user = user_db_cursor.mappings().one_or_none()
if not user_db:
if not user:
return None
user_data = {
column.name: (
getattr(user_db, column.name).name
if isinstance(getattr(user_db, column.name), Enum)
else getattr(user_db, column.name)
)
for column in account_table.columns
}
return User.model_validate(user_data)
return UserUpdate.model_validate(user)
async def get_user_by_login(connection: AsyncConnection, login: str) -> Optional[User]:
@@ -107,7 +102,7 @@ async def update_user_by_id(connection: AsyncConnection, update_values, user) ->
await connection.commit()
async def create_user(connection: AsyncConnection, user: User, creator_id: int) -> Optional[User]:
async def create_user(connection: AsyncConnection, user: UserUpdate, creator_id: int) -> Optional[UserUpdate]:
"""
Создает нове поле в таблице account_table.
"""
@@ -123,8 +118,9 @@ async def create_user(connection: AsyncConnection, user: User, creator_id: int)
status=user.status.value,
)
await connection.execute(query)
res = await connection.execute(query)
await connection.commit()
user = await get_user_by_id(connection, res.lastrowid)
return user