10
10
from fastapi_pundra .rest .paginate import paginate
11
11
from sqlalchemy .orm import Session
12
12
13
- from app .database import get_db
14
13
from app .models .users import User
15
14
from app .schemas .user_schema import UserCreateSchema
16
15
from app .serializers .user_serializer import UserLoginSerializer , UserSerializer
19
18
class UserService :
20
19
"""User service."""
21
20
22
- def __init__ (self , db : Session | None = None ) -> None :
23
- """Initialize the user service."""
24
- self .db = db or get_db ()
25
-
26
- async def s_registration (self , request : Request , data : UserCreateSchema ) -> dict :
21
+ async def s_registration (self , request : Request , db : Session , data : UserCreateSchema ) -> dict :
27
22
"""Register a new user."""
28
- db_user = self . db .query (User ).filter (User .email == data .email ).first ()
23
+ db_user = db .query (User ).filter (User .email == data .email ).first ()
29
24
30
25
if db_user :
31
26
raise BaseAPIException (message = "Email already registered" , status_code = 400 )
@@ -36,9 +31,9 @@ async def s_registration(self, request: Request, data: UserCreateSchema) -> dict
36
31
new_user .name = data .name
37
32
new_user .status = "active"
38
33
39
- self . db .add (new_user )
40
- self . db .commit ()
41
- self . db .refresh (new_user )
34
+ db .add (new_user )
35
+ db .commit ()
36
+ db .refresh (new_user )
42
37
43
38
user_data = UserSerializer (** new_user .as_dict ())
44
39
@@ -59,9 +54,9 @@ async def s_registration(self, request: Request, data: UserCreateSchema) -> dict
59
54
60
55
return {"message" : "Registration successful" , "user" : user_data .model_dump ()}
61
56
62
- async def s_get_users (self , request : Request ) -> dict :
57
+ async def s_get_users (self , request : Request , db : Session ) -> dict :
63
58
"""Get users."""
64
- query = self . db .query (User )
59
+ query = db .query (User )
65
60
66
61
# TODO: add logic here if you want to filter users
67
62
@@ -80,22 +75,22 @@ def additional_data(data: list) -> dict:
80
75
additional_data = additional_data ,
81
76
)
82
77
83
- async def s_get_user_by_id (self , request : Request , user_id : str ) -> User :
78
+ async def s_get_user_by_id (self , request : Request , db : Session , user_id : str ) -> User :
84
79
"""Get user by id."""
85
- user = self . db .query (User ).filter (User .id == user_id ).first ()
80
+ user = db .query (User ).filter (User .id == user_id ).first ()
86
81
if user is None :
87
82
raise ItemNotFoundException (message = "User not found" )
88
83
return user
89
84
90
- async def s_login (self , request : Request ) -> dict :
85
+ async def s_login (self , request : Request , db : Session ) -> dict :
91
86
"""Login a user."""
92
87
# Get data from request
93
88
the_data = await the_query (request )
94
89
email = the_data .get ("email" )
95
90
password = the_data .get ("password" )
96
91
97
92
# Find user by email
98
- user = self . db .query (User ).filter (User .email == email ).first ()
93
+ user = db .query (User ).filter (User .email == email ).first ()
99
94
if not user :
100
95
raise UnauthorizedException (message = "Invalid credentials" )
101
96
@@ -125,10 +120,10 @@ async def s_login(self, request: Request) -> dict:
125
120
"refresh_token" : refresh_token ,
126
121
}
127
122
128
- async def s_update_user (self , request : Request , user_id : str ) -> dict :
123
+ async def s_update_user (self , request : Request , db : Session , user_id : str ) -> dict :
129
124
"""Update a user."""
130
125
the_data = await the_query (request )
131
- user = self . db .query (User ).filter (User .id == user_id ).first ()
126
+ user = db .query (User ).filter (User .id == user_id ).first ()
132
127
133
128
if not user :
134
129
raise ItemNotFoundException (message = "User not found" )
@@ -139,17 +134,17 @@ async def s_update_user(self, request: Request, user_id: str) -> dict:
139
134
user .email = the_data .get ("email" )
140
135
if the_data .get ("password" ):
141
136
user .password = generate_password_hash (the_data .get ("password" ))
142
- self . db .commit ()
143
- self . db .refresh (user )
137
+ db .commit ()
138
+ db .refresh (user )
144
139
145
140
user_data = UserSerializer (** user .as_dict ())
146
141
return {"message" : "User updated successfully" , "user" : user_data .model_dump ()}
147
142
148
- async def s_delete_user (self , request : Request , user_id : str ) -> dict :
143
+ async def s_delete_user (self , request : Request , db : Session , user_id : str ) -> dict :
149
144
"""Delete a user."""
150
- user = self . db .query (User ).filter (User .id == user_id ).first ()
145
+ user = db .query (User ).filter (User .id == user_id ).first ()
151
146
if not user :
152
147
raise ItemNotFoundException (message = "User not found" )
153
- self . db .delete (user )
154
- self . db .commit ()
148
+ db .delete (user )
149
+ db .commit ()
155
150
return {"message" : "User deleted successfully" }
0 commit comments