Complete repository delegation - remove remaining direct db operations
- Add commit() method to AvailabilityRepository for transaction control - Add refresh() method to UserRepository - Update AvailabilityService to use repository.commit() instead of db.commit() - Update AuthService to use UserRepository.refresh() instead of db.refresh() - All services now consistently delegate ALL persistence to repositories
This commit is contained in:
parent
33aa8ad13b
commit
db181b338c
4 changed files with 13 additions and 4 deletions
|
|
@ -64,3 +64,7 @@ class AvailabilityRepository:
|
|||
for availability in availabilities:
|
||||
self.db.add(availability)
|
||||
await self.db.flush()
|
||||
|
||||
async def commit(self) -> None:
|
||||
"""Commit the current transaction."""
|
||||
await self.db.commit()
|
||||
|
|
|
|||
|
|
@ -58,3 +58,7 @@ class UserRepository:
|
|||
await self.db.commit()
|
||||
await self.db.refresh(user)
|
||||
return user
|
||||
|
||||
async def refresh(self, user: User) -> None:
|
||||
"""Refresh a user instance from the database."""
|
||||
await self.db.refresh(user)
|
||||
|
|
|
|||
|
|
@ -79,9 +79,10 @@ class AuthService:
|
|||
invite.status = InviteStatus.SPENT
|
||||
invite.used_by_id = user.id
|
||||
invite.spent_at = datetime.now(UTC)
|
||||
await self.invite_repo.update(invite)
|
||||
|
||||
await self.db.commit()
|
||||
await self.db.refresh(user)
|
||||
# Refresh user to ensure it's up to date
|
||||
await self.user_repo.refresh(user)
|
||||
|
||||
# Create access token
|
||||
access_token = create_access_token(data={"sub": str(user.id)})
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ class AvailabilityService:
|
|||
for slot in slots
|
||||
]
|
||||
await self.availability_repo.create_multiple(availabilities)
|
||||
await self.db.commit()
|
||||
await self.availability_repo.commit()
|
||||
|
||||
return AvailabilityDay(date=target_date, slots=slots)
|
||||
|
||||
|
|
@ -188,7 +188,7 @@ class AvailabilityService:
|
|||
)
|
||||
|
||||
# Commit all changes atomically
|
||||
await self.db.commit()
|
||||
await self.availability_repo.commit()
|
||||
except Exception:
|
||||
# Rollback on any error to maintain atomicity
|
||||
await self.db.rollback()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue