async def update_note(note: NoteInUpdate = Body(..., embed=True), user: UserInDb = Depends(get_current_user), note_repo: NoteRepository = Depends( get_repository(NoteRepository))) -> dict: try: await note_repo.update_note(user.id, note) except ParametersNotSpecified: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Parameters for updating are not specified") return {"status": "ok", "detail": "Note updated"}
async def register( user_create: UserInCreate = Body(..., embed=True, alias="user"), user_repo: UserRepository = Depends(get_repository(UserRepository)), ) -> dict: try: await user_repo.create_user(user_create) except EntityAlreadyExist: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="User with this email or username already exist" ) return {"status": "ok"}
async def login( response: Response, user_login: UserInLogin = Body(..., embed=True, alias="user"), user_repo: UserRepository = Depends(get_repository(UserRepository)) ) -> dict: try: token = await user_repo.get_access_token(user_login) except(EntityDoesNotExist, FailedCredentials): raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="User does not exist or invalid credentials" ) response.set_cookie(key="access_token", value=token, expires=ACCESS_TOKEN_EXPIRE_MINUTES * 60, samesite='none') return {"status": "ok"}
async def delete_note(note: NoteInUpdate = Body(..., embed=True), user: UserInDb = Depends(get_current_user), note_repo: NoteRepository = Depends( get_repository(NoteRepository))) -> dict: await note_repo.delete_note(user.id, note) return {"status": "ok", "detail": "Note deleted"}
async def get_notes(user: UserInDb = Depends(get_current_user), note_repo: NoteRepository = Depends( get_repository(NoteRepository))) -> list: return await note_repo.get_user_notes(user.id)
async def create_note(note: NoteInCreate = Body(..., embed=True), user: UserInDb = Depends(get_current_user), note_repo: NoteRepository = Depends( get_repository(NoteRepository))) -> dict: await note_repo.create_note(note, user.id) return {"status": "ok"}