Skip to content

Commit 71f3e02

Browse files
committed
Refactor user data service and models for improved readability
- Reformatted method signatures and SQLAlchemy model definitions for better clarity. - Ensured consistent line endings and spacing across user data service and related files. - Updated exception handling messages for better readability in the user data service implementation.
1 parent b40620a commit 71f3e02

File tree

6 files changed

+63
-24
lines changed

6 files changed

+63
-24
lines changed

backend/app/interfaces/user_data_service.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ def create_user_data(self, user_data: UserDataCreateRequest):
4949
pass
5050

5151
@abstractmethod
52-
def update_user_data_by_user_id(self, user_id: UUID, user_data: UserDataUpdateRequest):
52+
def update_user_data_by_user_id(
53+
self, user_id: UUID, user_data: UserDataUpdateRequest
54+
):
5355
"""
5456
Update user data for a user
5557
@@ -83,4 +85,4 @@ def delete_user_data_by_user_id(self, user_id: UUID):
8385
:type user_id: UUID
8486
:raises Exception: if user data deletion fails
8587
"""
86-
pass
88+
pass

backend/app/models/UserData.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
class UserData(Base):
1111
__tablename__ = "user_data"
1212
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
13-
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False, unique=True)
13+
user_id = Column(
14+
UUID(as_uuid=True), ForeignKey("users.id"), nullable=False, unique=True
15+
)
1416
date_of_birth = Column(Date, nullable=True)
1517
email = Column(String(120), nullable=True)
1618
phone = Column(String(20), nullable=True)
@@ -34,4 +36,4 @@ class UserData(Base):
3436
preferences = Column(Text, nullable=True)
3537

3638
# Relationship to User table
37-
user = relationship("User", back_populates="user_data")
39+
user = relationship("User", back_populates="user_data")

backend/app/routes/user_data.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
async def create_user_data(
2323
user_data: UserDataCreateRequest,
2424
user_data_service: UserDataService = Depends(get_user_data_service),
25-
authorized: bool = has_roles([UserRole.ADMIN, UserRole.PARTICIPANT, UserRole.VOLUNTEER]),
25+
authorized: bool = has_roles(
26+
[UserRole.ADMIN, UserRole.PARTICIPANT, UserRole.VOLUNTEER]
27+
),
2628
):
2729
"""Create user data for intake form"""
2830
try:
@@ -37,7 +39,9 @@ async def create_user_data(
3739
async def get_user_data_by_user_id(
3840
user_id: UUID,
3941
user_data_service: UserDataService = Depends(get_user_data_service),
40-
authorized: bool = has_roles([UserRole.ADMIN, UserRole.PARTICIPANT, UserRole.VOLUNTEER]),
42+
authorized: bool = has_roles(
43+
[UserRole.ADMIN, UserRole.PARTICIPANT, UserRole.VOLUNTEER]
44+
),
4145
):
4246
"""Get user data by user ID"""
4347
try:
@@ -68,7 +72,9 @@ async def update_user_data_by_user_id(
6872
user_id: UUID,
6973
user_data: UserDataUpdateRequest,
7074
user_data_service: UserDataService = Depends(get_user_data_service),
71-
authorized: bool = has_roles([UserRole.ADMIN, UserRole.PARTICIPANT, UserRole.VOLUNTEER]),
75+
authorized: bool = has_roles(
76+
[UserRole.ADMIN, UserRole.PARTICIPANT, UserRole.VOLUNTEER]
77+
),
7278
):
7379
"""Update user data by user ID"""
7480
try:
@@ -108,4 +114,4 @@ async def delete_user_data_by_user_id(
108114
except HTTPException as http_ex:
109115
raise http_ex
110116
except Exception as e:
111-
raise HTTPException(status_code=500, detail=str(e))
117+
raise HTTPException(status_code=500, detail=str(e))

backend/app/schemas/user_data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,4 @@ class UserDataResponse(UserDataBase):
6464
user_id: UUID
6565

6666
# from_attributes enables automatic mapping from SQLAlchemy model to Pydantic model
67-
model_config = ConfigDict(from_attributes=True)
67+
model_config = ConfigDict(from_attributes=True)

backend/app/services/implementations/user_data_service.py

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,34 @@ def get_user_data_by_id(self, user_data_id: UUID) -> UserDataResponse:
2323
"""Get user data by its ID"""
2424
user_data = self.db.query(UserData).filter(UserData.id == user_data_id).first()
2525
if not user_data:
26-
raise HTTPException(status_code=404, detail=f"User data with id {user_data_id} not found")
26+
raise HTTPException(
27+
status_code=404, detail=f"User data with id {user_data_id} not found"
28+
)
2729
return UserDataResponse.model_validate(user_data)
2830

2931
def get_user_data_by_user_id(self, user_id: UUID) -> UserDataResponse:
3032
"""Get user data by user ID"""
3133
user_data = self.db.query(UserData).filter(UserData.user_id == user_id).first()
3234
if not user_data:
33-
raise HTTPException(status_code=404, detail=f"User data for user {user_id} not found")
35+
raise HTTPException(
36+
status_code=404, detail=f"User data for user {user_id} not found"
37+
)
3438
return UserDataResponse.model_validate(user_data)
3539

3640
def create_user_data(self, user_data: UserDataCreateRequest) -> UserDataResponse:
3741
"""Create user data for a user"""
3842
try:
3943
# Check if user data already exists for this user
40-
existing_data = self.db.query(UserData).filter(UserData.user_id == user_data.user_id).first()
44+
existing_data = (
45+
self.db.query(UserData)
46+
.filter(UserData.user_id == user_data.user_id)
47+
.first()
48+
)
4149
if existing_data:
42-
raise HTTPException(status_code=409, detail=f"User data already exists for user {user_data.user_id}")
50+
raise HTTPException(
51+
status_code=409,
52+
detail=f"User data already exists for user {user_data.user_id}",
53+
)
4354

4455
# Create new user data
4556
db_user_data = UserData(**user_data.model_dump())
@@ -56,13 +67,19 @@ def create_user_data(self, user_data: UserDataCreateRequest) -> UserDataResponse
5667
self.logger.error(f"Error creating user data: {str(e)}")
5768
raise HTTPException(status_code=500, detail=str(e))
5869

59-
def update_user_data_by_user_id(self, user_id: UUID, user_data: UserDataUpdateRequest) -> UserDataResponse:
70+
def update_user_data_by_user_id(
71+
self, user_id: UUID, user_data: UserDataUpdateRequest
72+
) -> UserDataResponse:
6073
"""Update user data for a user"""
6174
try:
6275
# Get existing user data
63-
db_user_data = self.db.query(UserData).filter(UserData.user_id == user_id).first()
76+
db_user_data = (
77+
self.db.query(UserData).filter(UserData.user_id == user_id).first()
78+
)
6479
if not db_user_data:
65-
raise HTTPException(status_code=404, detail=f"User data for user {user_id} not found")
80+
raise HTTPException(
81+
status_code=404, detail=f"User data for user {user_id} not found"
82+
)
6683

6784
# Update only provided fields
6885
update_data = user_data.model_dump(exclude_unset=True)
@@ -84,9 +101,14 @@ def update_user_data_by_user_id(self, user_id: UUID, user_data: UserDataUpdateRe
84101
def delete_user_data_by_id(self, user_data_id: UUID):
85102
"""Delete user data by its ID"""
86103
try:
87-
user_data = self.db.query(UserData).filter(UserData.id == user_data_id).first()
104+
user_data = (
105+
self.db.query(UserData).filter(UserData.id == user_data_id).first()
106+
)
88107
if not user_data:
89-
raise HTTPException(status_code=404, detail=f"User data with id {user_data_id} not found")
108+
raise HTTPException(
109+
status_code=404,
110+
detail=f"User data with id {user_data_id} not found",
111+
)
90112

91113
self.db.delete(user_data)
92114
self.db.commit()
@@ -101,9 +123,13 @@ def delete_user_data_by_id(self, user_data_id: UUID):
101123
def delete_user_data_by_user_id(self, user_id: UUID):
102124
"""Delete user data by user ID"""
103125
try:
104-
user_data = self.db.query(UserData).filter(UserData.user_id == user_id).first()
126+
user_data = (
127+
self.db.query(UserData).filter(UserData.user_id == user_id).first()
128+
)
105129
if not user_data:
106-
raise HTTPException(status_code=404, detail=f"User data for user {user_id} not found")
130+
raise HTTPException(
131+
status_code=404, detail=f"User data for user {user_id} not found"
132+
)
107133

108134
self.db.delete(user_data)
109135
self.db.commit()
@@ -113,4 +139,4 @@ def delete_user_data_by_user_id(self, user_id: UUID):
113139
except Exception as e:
114140
self.db.rollback()
115141
self.logger.error(f"Error deleting user data: {str(e)}")
116-
raise HTTPException(status_code=500, detail=str(e))
142+
raise HTTPException(status_code=500, detail=str(e))

backend/migrations/versions/d3e4f5g6h7i8_add_user_data_table_for_storing_user_matching_parameters.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,17 @@ def upgrade() -> None:
4646
sa.Column("treatment", sa.Text(), nullable=True),
4747
sa.Column("experience", sa.Text(), nullable=True),
4848
sa.Column("preferences", sa.Text(), nullable=True),
49-
sa.ForeignKeyConstraint(["user_id"], ["users.id"], ),
49+
sa.ForeignKeyConstraint(
50+
["user_id"],
51+
["users.id"],
52+
),
5053
sa.PrimaryKeyConstraint("id"),
51-
sa.UniqueConstraint("user_id")
54+
sa.UniqueConstraint("user_id"),
5255
)
5356
# ### end Alembic commands ###
5457

5558

5659
def downgrade() -> None:
5760
# ### commands auto generated by Alembic - please adjust! ###
5861
op.drop_table("user_data")
59-
# ### end Alembic commands ###
62+
# ### end Alembic commands ###

0 commit comments

Comments
 (0)