diff --git a/backend/repositories/user.py b/backend/repositories/user.py index 833c825..007784d 100644 --- a/backend/repositories/user.py +++ b/backend/repositories/user.py @@ -30,3 +30,31 @@ class UserRepository: select(User.email).where(User.id == godfather_id) ) return result.scalar_one_or_none() + + async def create(self, user: User) -> User: + """ + Create a new user record. + + Args: + user: User instance to persist + + Returns: + Created User record (flushed to get ID) + """ + self.db.add(user) + await self.db.flush() + return user + + async def update(self, user: User) -> User: + """ + Update an existing user record. + + Args: + user: User instance to update + + Returns: + Updated User record (refreshed from database) + """ + await self.db.commit() + await self.db.refresh(user) + return user diff --git a/backend/services/auth.py b/backend/services/auth.py index ff31a54..5e31155 100644 --- a/backend/services/auth.py +++ b/backend/services/auth.py @@ -72,8 +72,8 @@ class AuthService: if default_role: user.roles.append(default_role) - self.db.add(user) - await self.db.flush() # Get user ID + # Create user (flush to get ID) + user = await self.user_repo.create(user) # Mark invite as spent invite.status = InviteStatus.SPENT diff --git a/backend/services/profile.py b/backend/services/profile.py index 8f63bba..447022f 100644 --- a/backend/services/profile.py +++ b/backend/services/profile.py @@ -68,8 +68,7 @@ class ProfileService: user.signal = data.signal user.nostr_npub = data.nostr_npub - await self.db.commit() - await self.db.refresh(user) + await self.user_repo.update(user) godfather_email = await self.user_repo.get_godfather_email(user.godfather_id)