Skip to content

Commit 7ce12d4

Browse files
create endpoint to update user data
1 parent 91b6d51 commit 7ce12d4

File tree

5 files changed

+33
-2
lines changed

5 files changed

+33
-2
lines changed

app/controller/Users.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,10 @@ def handle_login(self, auth_code: str):
2727
"message": user,
2828
"status": status.HTTP_200_OK,
2929
}
30+
31+
def handle_update_user(self, user_id: int, update_data: dict):
32+
self.users_service.update_user(user_id, update_data)
33+
return {
34+
"message": "User updated successfully",
35+
"status": status.HTTP_200_OK,
36+
}

app/main.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from controller.Users import UsersController
33
from service.Users import UsersService
44
from repository.Users import UsersRepository
5-
from schemas.Schemas import CreateUserSchema
5+
from schemas.Schemas import CreateUserSchema, UpdateUserSchema
66
from schemas.Schemas import LoginRequest
77

88

@@ -35,3 +35,8 @@ async def create_user(user_data: CreateUserSchema):
3535
@app.post("/login")
3636
def login_with_google(request: LoginRequest):
3737
return users_controller.handle_login(request.auth_code)
38+
39+
40+
@app.patch("/users/{user_id}")
41+
async def update_user(user_id: int, update_data: UpdateUserSchema):
42+
return users_controller.handle_update_user(user_id, update_data.dict())

app/repository/Users.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,14 @@ def create_user(
5858
self.session.commit()
5959
return new_user
6060

61+
def edit_user(self, user_id: int, data_to_edit: dict):
62+
user = self.session.query(User).filter_by(id=user_id).first()
63+
for field, value in data_to_edit.items():
64+
setattr(user, field, value)
65+
66+
self.session.commit()
67+
return user
68+
6169
def __parse_result(self, result):
6270
if not result:
6371
return []

app/schemas/Schemas.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from pydantic import BaseModel
1+
from pydantic import BaseModel, HttpUrl
2+
from typing import Optional
23

34

45
class UserSchema(BaseModel):
@@ -15,3 +16,9 @@ class CreateUserSchema(BaseModel):
1516

1617
class LoginRequest(BaseModel):
1718
auth_code: str
19+
20+
21+
class UpdateUserSchema(BaseModel):
22+
name: Optional[str] = None
23+
gender: Optional[str] = None
24+
photo: Optional[HttpUrl] = None

app/service/Users.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,7 @@ def _get_user_info(self, access_token):
6767
if response.json().get("picture") is not None:
6868
user_data['photo'] = response.json().get("picture")
6969
return user_data
70+
71+
def update_user(self, user_id: int, update_data: dict):
72+
self.get_user(user_id)
73+
self.user_repository.edit_user(user_id, update_data)

0 commit comments

Comments
 (0)