dunossauro / fastapi-do-zero

Curso básico de FastAPI
https://fastapidozero.dunossauro.com/
622 stars 64 forks source link

Alterar PUT na aula 05 para contemplar erro de integridade! #232

Open fabiocasadossites opened 3 weeks ago

fabiocasadossites commented 3 weeks ago

Quando você altera os dados no put ele pode trocar o username e email, porém você não valida se o que ele está atualizando tem no banco e pode duplicar, na verdade, não vai, pois o banco não vai deixar mais o que você falou na live de eu prefiro olhar antes de pular vale aqui?

Gostaria de ver como você faria essa validação.

` @router.put('/{user_id}', response_model=UserPublic) def update_user( user_id: int, user: UserSchema, session: Session, current_user: CurrentUser, ): if current_user.id != user_id: raise HTTPException( status_code=HTTPStatus.FORBIDDEN, detail='Not enough permissions' )

current_user.username = user.username
current_user.password = get_password_hash(user.password)
current_user.email = user.email
session.commit()
session.refresh(current_user)

return current_user

`

dunossauro commented 2 weeks ago

Você tem que fazer um try validando a integridade do dado com o sqlalchemy. O erro levantado será IntegrityError.

dunossauro commented 2 weeks ago

Vou deixar essa issue aberta para considerar isso em uma futura manutenção.

dunossauro commented 2 weeks ago

Na manutenção também deve ser adicionado um teste para o erro de integridade. O resultado esperado deve ser 409 CONFLICT.

fabiocasadossites commented 2 weeks ago

Obrigado!