VORKOUT-7 #9

Merged
ivan.dev merged 12 commits from VORKOUT-7 into master 2025-06-05 16:29:14 +05:00
Member
No description provided.
ivan.dev added 4 commits 2025-05-26 14:07:18 +05:00
ivan.dev requested review from cyrussmeat 2025-05-26 14:07:24 +05:00
ivan.dev requested review from vlad.dev 2025-05-26 14:07:24 +05:00
vlad.dev requested changes 2025-05-26 20:03:28 +05:00
Dismissed
@ -13,0 +19,4 @@
first_user = page*limit-(limit-1)
last_user = first_user+(limit-1)
query = select(account_table.c.id, account_table.c.login).where(account_table.c.id.between(first_user, last_user ))
Member

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

Давай все-таки через `offset` делать, а то вычислять по `id` как-то сомнительно выглядит
ivan.dev marked this conversation as resolved
@ -13,0 +27,4 @@
user_list = [{'id': user.id, 'login': user.login} for user in users]
user_models = [AllUser(id=user['id'], login=user['login']) for user in user_list]
Member

Можно вместо этого использовать parse_obj_as из pydantic.tools, чтобы парсить запрос сразу из бд в модель User
Можешь посмотреть в репозитории бэка

Можно вместо этого использовать `parse_obj_as` из `pydantic.tools`, чтобы парсить запрос сразу из бд в модель `User` Можешь посмотреть в [репозитории](https://gitea.heado.ru/dinar/backend/src/branch/master/backend/db/logic/issues.py#L93) бэка
First-time contributor

parse_obj_as устарело в Pydantic 2, не используйте это. Для подобных целей создали TypeAdapter.

`parse_obj_as` устарело в Pydantic 2, не используйте это. Для подобных целей создали [TypeAdapter](https://docs.pydantic.dev/2.11/concepts/type_adapter/).
ivan.dev marked this conversation as resolved
ivan.dev added 1 commit 2025-05-28 14:10:02 +05:00
mikhail.dev requested changes 2025-05-29 01:46:48 +05:00
@ -13,0 +21,4 @@
"""
user_adapter = TypeAdapter(AllUser)
response_adapter = TypeAdapter(AllUserResponse)
First-time contributor
  1. Тебе нужен адаптер для list[AllUser]. В текущем виде это не имеет смысла, это равносильно простому созданию класса по кейвордам.
  2. В документации написано, что такие конструкции лучше создавать один раз, соответственно стоит их делать глобальными тогда.
1. Тебе нужен адаптер для `list[AllUser]`. В текущем виде это не имеет смысла, это равносильно простому созданию класса по кейвордам. 2. В документации написано, что такие конструкции лучше создавать один раз, соответственно стоит их делать глобальными тогда.
ivan.dev marked this conversation as resolved
@ -13,0 +46,4 @@
for u in users_data
]
return response_adapter.validate_python({
First-time contributor

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

Тут нужно вернуть обыкновенное заполнение класса и его возврат.
ivan.dev marked this conversation as resolved
ivan.dev added 1 commit 2025-05-30 08:51:50 +05:00
vlad.dev reviewed 2025-05-30 12:11:49 +05:00
@ -13,0 +37,4 @@
total_pages = math.ceil(total_count / limit)
validated_users = all_user_adapter.validate_python(
[{"id": u.id, "login": u.login} for u in users_data]
Member

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

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

Да.

Да.
ivan.dev marked this conversation as resolved
ivan.dev added 1 commit 2025-06-02 15:56:47 +05:00
mikhail.dev requested changes 2025-06-02 16:41:53 +05:00
@ -13,0 +46,4 @@
print(users_data)
validated_users = all_user_adapter.validate_python(
[{"id": u.id,
First-time contributor

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

Так сразу `users_data` можно сюда передать? На худой случай [._asdict()](https://docs.sqlalchemy.org/en/20/core/connections.html#sqlalchemy.engine.Row._asdict) есть.
ivan.dev marked this conversation as resolved
vlad.dev requested changes 2025-06-02 17:31:29 +05:00
Dismissed
@ -13,0 +13,4 @@
from api.schemas.endpoints.account import AllUserResponse, all_user_adapter
async def get_all_users_login_and_id(connection: AsyncConnection, page, limit) -> Optional[User]:
Member

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

Надо переименовать метод и изменить описание, сейчас же не только `login` и `id`
ivan.dev marked this conversation as resolved
@ -13,3 +63,4 @@
)
async def get_user_id(connection: AsyncConnection, id: int) -> Optional[User]:
Member

Вот эти методы я бы тоже переименовал на что-то по типу get_user_by_id, а то, как по мне, не особо читаемо
Но сам смотри, если тебе так удобнее, то оставляй

Вот эти методы я бы тоже переименовал на что-то по типу `get_user_by_id`, а то, как по мне, не особо читаемо Но сам смотри, если тебе так удобнее, то оставляй
ivan.dev marked this conversation as resolved
@ -31,0 +33,4 @@
id: int
name: str
login: str
email: EmailStr
Member

email и bind_tenant_id в бд определены так, что могут быть None, поэтому тут надо тоже это описать, а то, например, пользователь vorkout не проходит валидацию

`email` и `bind_tenant_id` в бд определены так, что могут быть `None`, поэтому тут надо тоже это описать, а то, например, пользователь `vorkout` не проходит валидацию
ivan.dev marked this conversation as resolved
ivan.dev added 1 commit 2025-06-03 13:01:13 +05:00
vlad.dev approved these changes 2025-06-03 17:15:31 +05:00
ivan.dev added 1 commit 2025-06-04 12:04:12 +05:00
cyrussmeat approved these changes 2025-06-04 18:48:31 +05:00
ivan.dev added 1 commit 2025-06-05 13:04:43 +05:00
vlad.dev requested changes 2025-06-05 14:36:57 +05:00
@ -25,3 +5,4 @@
from api.db.tables.account import AccountRole,AccountStatus
class User(Base):
Member

Нет импорта для Base

Нет импорта для `Base`
Member

Надо наследовать от нашего Base, а не того, который из pydantic

Надо наследовать от нашего [`Base`](https://gitea.heado.ru/Vorkout/connect/src/branch/master/api/api/schemas/base.py#L5), а не того, который из `pydantic`
@ -24,3 +5,4 @@
from api.db.tables.account import KeyType,KeyStatus
class AccountKeyring(Base):
Member

Нет импорта Base

Нет импорта `Base`
Member

Тоже самое что и с User схемой

Тоже самое что и с `User` схемой
@ -23,4 +8,2 @@
DELETED = "DELETED"
class UserUpdate(Base):
Member

Тут тоже с импортами какая-то путаница

Тут тоже с импортами какая-то путаница
@ -24,3 +5,4 @@
from api.db.tables.account import KeyType,KeyStatus
class AccountKeyringUpdate(Base):
Member

Не хватает испорта Base

Не хватает испорта `Base`
@ -16,2 +16,4 @@
class Refresh(Base):
refresh_token: str
class Access(BaseModel):
Member

Тут не от того класса наследуется

Тут не от того класса наследуется
ivan.dev added 1 commit 2025-06-05 14:41:28 +05:00
ivan.dev added 1 commit 2025-06-05 14:55:42 +05:00
ivan.dev merged commit 8965365afc into master 2025-06-05 16:29:14 +05:00
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Vorkout/connect#9
No description provided.