File tree Expand file tree Collapse file tree 5 files changed +33
-2
lines changed Expand file tree Collapse file tree 5 files changed +33
-2
lines changed Original file line number Diff line number Diff line change @@ -27,3 +27,10 @@ def handle_login(self, auth_code: str):
27
27
"message" : user ,
28
28
"status" : status .HTTP_200_OK ,
29
29
}
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
+ }
Original file line number Diff line number Diff line change 2
2
from controller .Users import UsersController
3
3
from service .Users import UsersService
4
4
from repository .Users import UsersRepository
5
- from schemas .Schemas import CreateUserSchema
5
+ from schemas .Schemas import CreateUserSchema , UpdateUserSchema
6
6
from schemas .Schemas import LoginRequest
7
7
8
8
@@ -35,3 +35,8 @@ async def create_user(user_data: CreateUserSchema):
35
35
@app .post ("/login" )
36
36
def login_with_google (request : LoginRequest ):
37
37
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 ())
Original file line number Diff line number Diff line change @@ -58,6 +58,14 @@ def create_user(
58
58
self .session .commit ()
59
59
return new_user
60
60
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
+
61
69
def __parse_result (self , result ):
62
70
if not result :
63
71
return []
Original file line number Diff line number Diff line change 1
- from pydantic import BaseModel
1
+ from pydantic import BaseModel , HttpUrl
2
+ from typing import Optional
2
3
3
4
4
5
class UserSchema (BaseModel ):
@@ -15,3 +16,9 @@ class CreateUserSchema(BaseModel):
15
16
16
17
class LoginRequest (BaseModel ):
17
18
auth_code : str
19
+
20
+
21
+ class UpdateUserSchema (BaseModel ):
22
+ name : Optional [str ] = None
23
+ gender : Optional [str ] = None
24
+ photo : Optional [HttpUrl ] = None
Original file line number Diff line number Diff line change @@ -67,3 +67,7 @@ def _get_user_info(self, access_token):
67
67
if response .json ().get ("picture" ) is not None :
68
68
user_data ['photo' ] = response .json ().get ("picture" )
69
69
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 )
You can’t perform that action at this time.
0 commit comments