fix: TypeAdapter

This commit is contained in:
TheNoxium 2025-05-30 08:51:49 +05:00
parent 320c13183f
commit 5094b84675
3 changed files with 12 additions and 19 deletions

View File

@ -3,8 +3,6 @@ import math
from datetime import datetime, timezone from datetime import datetime, timezone
from pydantic import TypeAdapter
from sqlalchemy import insert, select, func from sqlalchemy import insert, select, func
from sqlalchemy.ext.asyncio import AsyncConnection from sqlalchemy.ext.asyncio import AsyncConnection
from enum import Enum from enum import Enum
@ -12,7 +10,7 @@ from enum import Enum
from api.db.tables.account import account_table from api.db.tables.account import account_table
from api.schemas.account.account import User from api.schemas.account.account import User
from api.schemas.endpoints.account import AllUser, AllUserResponse from api.schemas.endpoints.account import AllUserResponse, all_user_adapter
async def get_all_users_login_and_id(connection: AsyncConnection, page, limit) -> Optional[User]: async def get_all_users_login_and_id(connection: AsyncConnection, page, limit) -> Optional[User]:
@ -20,9 +18,6 @@ async def get_all_users_login_and_id(connection: AsyncConnection, page, limit) -
Получает id и login всех юзеров Получает id и login всех юзеров
""" """
user_adapter = TypeAdapter(AllUser)
response_adapter = TypeAdapter(AllUserResponse)
first_user = page*limit-(limit) first_user = page*limit-(limit)
query = ( query = (
@ -41,16 +36,15 @@ async def get_all_users_login_and_id(connection: AsyncConnection, page, limit) -
total_count = count_result.scalar() total_count = count_result.scalar()
total_pages = math.ceil(total_count / limit) total_pages = math.ceil(total_count / limit)
validated_users = [ validated_users = all_user_adapter.validate_python(
user_adapter.validate_python({"id": u.id, "login": u.login}) [{"id": u.id, "login": u.login} for u in users_data]
for u in users_data )
]
return response_adapter.validate_python({ return AllUserResponse(
"users": validated_users, users=validated_users,
"amount_count": total_count, amount_count=total_count,
"amount_pages": total_pages amount_pages=total_pages
}) )
async def get_user_id(connection: AsyncConnection, id: int) -> Optional[User]: async def get_user_id(connection: AsyncConnection, id: int) -> Optional[User]:

View File

@ -1,11 +1,8 @@
from fastapi import ( from fastapi import (
APIRouter, APIRouter,
Body,
Depends, Depends,
Form,
HTTPException, HTTPException,
Request, Request,
Response,
status, status,
) )

View File

@ -1,7 +1,7 @@
from enum import Enum from enum import Enum
from typing import Optional, List from typing import Optional, List
from datetime import datetime from datetime import datetime
from pydantic import BaseModel, EmailStr, Field from pydantic import BaseModel, EmailStr, Field, TypeAdapter
# Таблица для получения информации из запроса # Таблица для получения информации из запроса
@ -37,3 +37,5 @@ class AllUserResponse(BaseModel):
users: List[AllUser] users: List[AllUser]
amount_count: int amount_count: int
amount_pages: int amount_pages: int
all_user_adapter = TypeAdapter(List[AllUser])