VORKOUT-7 #9

Merged
ivan.dev merged 12 commits from VORKOUT-7 into master 2025-06-05 16:29:14 +05:00
3 changed files with 12 additions and 19 deletions
Showing only changes of commit 5094b84675 - Show all commits

View File

@ -3,8 +3,6 @@ import math
from datetime import datetime, timezone
from pydantic import TypeAdapter
from sqlalchemy import insert, select, func
from sqlalchemy.ext.asyncio import AsyncConnection
from enum import Enum
@ -12,7 +10,7 @@ from enum import Enum
from api.db.tables.account import account_table
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]:
ivan.dev marked this conversation as resolved Outdated

Надо переименовать метод и изменить описание, сейчас же не только login и id

Надо переименовать метод и изменить описание, сейчас же не только `login` и `id`
@ -20,9 +18,6 @@ async def get_all_users_login_and_id(connection: AsyncConnection, page, limit) -
Получает id и login всех юзеров
"""
user_adapter = TypeAdapter(AllUser)
response_adapter = TypeAdapter(AllUserResponse)
first_user = page*limit-(limit)
ivan.dev marked this conversation as resolved Outdated

Давай все-таки через offset делать, а то вычислять по id как-то сомнительно выглядит

Давай все-таки через `offset` делать, а то вычислять по `id` как-то сомнительно выглядит
query = (
@ -41,16 +36,15 @@ async def get_all_users_login_and_id(connection: AsyncConnection, page, limit) -
total_count = count_result.scalar()
total_pages = math.ceil(total_count / limit)
validated_users = [
user_adapter.validate_python({"id": u.id, "login": u.login})
for u in users_data
]
validated_users = all_user_adapter.validate_python(
[{"id": u.id, "login": u.login} for u in users_data]
ivan.dev marked this conversation as resolved Outdated

А почему ты только эти поля селектишь? Просто для теста взял?

А почему ты только эти поля селектишь? Просто для теста взял?

Да.

Да.
)
return response_adapter.validate_python({
"users": validated_users,
"amount_count": total_count,
"amount_pages": total_pages
})
return AllUserResponse(
users=validated_users,
amount_count=total_count,
amount_pages=total_pages
)
ivan.dev marked this conversation as resolved Outdated

Тут нужно вернуть обыкновенное заполнение класса и его возврат.

Тут нужно вернуть обыкновенное заполнение класса и его возврат.

Так сразу users_data можно сюда передать? На худой случай ._asdict() есть.

Так сразу `users_data` можно сюда передать? На худой случай [._asdict()](https://docs.sqlalchemy.org/en/20/core/connections.html#sqlalchemy.engine.Row._asdict) есть.
async def get_user_id(connection: AsyncConnection, id: int) -> Optional[User]:

View File

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

View File

@ -1,7 +1,7 @@
from enum import Enum
from typing import Optional, List
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]
amount_count: int
amount_pages: int
all_user_adapter = TypeAdapter(List[AllUser])