Таска 1/2: явный каст и 404 ошибка #1

Open
skvachuk wants to merge 3 commits from feature/1 into develop
4 changed files with 7 additions and 19 deletions
Showing only changes of commit b6ffdd9553 - Show all commits

View File

@@ -10,7 +10,6 @@ from src.presentation.dependencies.logger import get_logger
from src.presentation.decorators import csrf_protect from src.presentation.decorators import csrf_protect
from src.presentation.schemas.api_errors import ApiErrorPayload, ApiValidationErrorsPayload from src.presentation.schemas.api_errors import ApiErrorPayload, ApiValidationErrorsPayload
from src.presentation.schemas.me_public import MeUserPublicResponse from src.presentation.schemas.me_public import MeUserPublicResponse
from src.presentation.serializers import me_user_public
account_router = APIRouter() account_router = APIRouter()
@@ -37,6 +36,10 @@ account_router = APIRouter()
'description': 'Ошибка проверки CSRF (нет пары cookie/заголовка, несовпадение или просрочен токен).', 'description': 'Ошибка проверки CSRF (нет пары cookie/заголовка, несовпадение или просрочен токен).',
'model': ApiErrorPayload, 'model': ApiErrorPayload,
}, },
status.HTTP_404_NOT_FOUND: {
'description': 'Учётная запись не найдена.',
'model': ApiErrorPayload,
},
status.HTTP_422_UNPROCESSABLE_ENTITY: { status.HTTP_422_UNPROCESSABLE_ENTITY: {
'description': 'Ошибка валидации входных данных (например, заголовков).', 'description': 'Ошибка валидации входных данных (например, заголовков).',
'model': ApiValidationErrorsPayload, 'model': ApiValidationErrorsPayload,
@@ -52,4 +55,4 @@ async def me(
) -> MeUserPublicResponse: ) -> MeUserPublicResponse:
user = await command(user_id=auth.user_id) user = await command(user_id=auth.user_id)
logger.info(f'Get user: {user.id}') logger.info(f'Get user: {user.id}')
return me_user_public(user) return MeUserPublicResponse.from_user(user)

Лучше сделать явный каст сущности в респонз модель

не MeUserPublicResponse.from_user(user)

а типо что-то:
MeUserPublicResponse(
id=user.id,
...
)

Лучше сделать явный каст сущности в респонз модель не MeUserPublicResponse.from_user(user) а типо что-то: MeUserPublicResponse( id=user.id, ... )

View File

@@ -30,7 +30,6 @@ from src.presentation.schemas import (
) )
from src.presentation.schemas.api_errors import ApiErrorPayload, ApiValidationErrorsPayload from src.presentation.schemas.api_errors import ApiErrorPayload, ApiValidationErrorsPayload
from src.presentation.schemas.me_public import MeUserPublicResponse, SetAvatarPublicResponse from src.presentation.schemas.me_public import MeUserPublicResponse, SetAvatarPublicResponse
from src.presentation.serializers import me_user_public
account_settings_router = APIRouter(prefix='/settings') account_settings_router = APIRouter(prefix='/settings')
@@ -175,7 +174,7 @@ async def set_avatar(
command: SetAvatarCommand = Depends(get_set_avatar_command), command: SetAvatarCommand = Depends(get_set_avatar_command),
) -> SetAvatarPublicResponse: ) -> SetAvatarPublicResponse:
user, webp_size = await command(user_id=auth.user_id, image_bytes=body.decoded_bytes) user, webp_size = await command(user_id=auth.user_id, image_bytes=body.decoded_bytes)
pub = me_user_public(user) pub = MeUserPublicResponse.from_user(user)
return SetAvatarPublicResponse(**pub.model_dump(), webp_size_bytes=webp_size) return SetAvatarPublicResponse(**pub.model_dump(), webp_size_bytes=webp_size)
@@ -197,7 +196,7 @@ async def delete_avatar(
command: DeleteAvatarCommand = Depends(get_delete_avatar_command), command: DeleteAvatarCommand = Depends(get_delete_avatar_command),
Review

**pub.model_dump()

Точно также нужно заменить на явное создание, а не распаковку

**pub.model_dump() Точно также нужно заменить на явное создание, а не распаковку
) -> MeUserPublicResponse: ) -> MeUserPublicResponse:
user = await command(user_id=auth.user_id) user = await command(user_id=auth.user_id)
return me_user_public(user) return MeUserPublicResponse.from_user(user)

Лучше сделать явный каст сущности в респонз модель

не MeUserPublicResponse.from_user(user)

а типо что-то:
MeUserPublicResponse(
id=user.id,
...
)

Лучше сделать явный каст сущности в респонз модель не MeUserPublicResponse.from_user(user) а типо что-то: MeUserPublicResponse( id=user.id, ... )
@account_settings_router.post( @account_settings_router.post(

View File

@@ -1 +0,0 @@
from src.presentation.serializers.me_user import me_user_payload, me_user_public

Если папка осталась, то ее тоже удалить

Если папка осталась, то ее тоже удалить

View File

@@ -1,13 +0,0 @@
from __future__ import annotations
from src.application.domain.entities import UserEntity
from src.presentation.schemas.me_public import MeUserPublicResponse
def me_user_public(user: UserEntity) -> MeUserPublicResponse:
return MeUserPublicResponse.from_user(user)
def me_user_payload(user: UserEntity) -> dict:
return me_user_public(user).model_dump(mode='json')