VORKOUT-7 #9
		Reference in New Issue
	
	Block a user
	
	No description provided.
		
		Delete Branch "VORKOUT-7"
	
	Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@@ -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 ))Давай все-таки через
offsetделать, а то вычислять поidкак-то сомнительно выглядит@@ -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]Можно вместо этого использовать
parse_obj_asизpydantic.tools, чтобы парсить запрос сразу из бд в модельUserМожешь посмотреть в репозитории бэка
parse_obj_asустарело в Pydantic 2, не используйте это. Для подобных целей создали TypeAdapter.@@ -13,0 +21,4 @@"""user_adapter = TypeAdapter(AllUser)response_adapter = TypeAdapter(AllUserResponse)list[AllUser]. В текущем виде это не имеет смысла, это равносильно простому созданию класса по кейвордам.@@ -13,0 +46,4 @@for u in users_data]return response_adapter.validate_python({Тут нужно вернуть обыкновенное заполнение класса и его возврат.
@@ -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]А почему ты только эти поля селектишь? Просто для теста взял?
Да.
@@ -13,0 +46,4 @@print(users_data)validated_users = all_user_adapter.validate_python([{"id": u.id,Так сразу
users_dataможно сюда передать? На худой случай ._asdict() есть.@@ -13,0 +13,4 @@from api.schemas.endpoints.account import AllUserResponse, all_user_adapterasync def get_all_users_login_and_id(connection: AsyncConnection, page, limit) -> Optional[User]:Надо переименовать метод и изменить описание, сейчас же не только
loginиid@@ -13,3 +63,4 @@)async def get_user_id(connection: AsyncConnection, id: int) -> Optional[User]:Вот эти методы я бы тоже переименовал на что-то по типу
get_user_by_id, а то, как по мне, не особо читаемоНо сам смотри, если тебе так удобнее, то оставляй
@@ -31,0 +33,4 @@id: intname: strlogin: stremail: EmailStremailиbind_tenant_idв бд определены так, что могут бытьNone, поэтому тут надо тоже это описать, а то, например, пользовательvorkoutне проходит валидацию@@ -25,3 +5,4 @@from api.db.tables.account import AccountRole,AccountStatusclass User(Base):Нет импорта для
BaseНадо наследовать от нашего
Base, а не того, который изpydantic@@ -24,3 +5,4 @@from api.db.tables.account import KeyType,KeyStatusclass AccountKeyring(Base):Нет импорта
BaseТоже самое что и с
Userсхемой@@ -23,4 +8,2 @@DELETED = "DELETED"class UserUpdate(Base):Тут тоже с импортами какая-то путаница
@@ -24,3 +5,4 @@from api.db.tables.account import KeyType,KeyStatusclass AccountKeyringUpdate(Base):Не хватает испорта
Base@@ -16,2 +16,4 @@class Refresh(Base):refresh_token: strclass Access(BaseModel):Тут не от того класса наследуется