from sqlalchemy.orm import Session from app.domain.models.user import User from .base_repository import BaseRepository from sqlalchemy.dialects.postgresql import UUID class UserRepository(BaseRepository[User]): '''사용자 레포지토리''' def __init__(self, db: Session): super().__init__(User, db) def get_by_user_id(self, user_id: str) -> User: '''사용자 ID로 사용자 조회''' return self.db.query(User).filter( User.user_id == user_id, User.deleted == False ).first() def exists_by_user_id(self, user_id: str) -> bool: '''사용자 ID가 존재하는지 확인''' return self.db.query(User).filter( User.user_id == user_id, User.deleted == False ).first() is not None def get_name_by_user_id(self, user_id: UUID) -> str | None: '''사용자 ID로 사용자 이름(name) 조회''' result = self.db.query(User.name).filter( User.id == user_id, User.deleted == False ).first() return result[0] if result else None def update_name_by_user_id(self, user_id: UUID, new_name: str) -> bool: user = self.get_by_id(user_id) # ✅ UUID(PK) 기준으로 조회 if not user: return False user.name = new_name self.db.commit() self.db.refresh(user) return True def get_by_user_uuid(self, user_id: UUID): '''사용자 UUID로 사용자 조회''' return self.db.query(User.id).filter( User.id == user_id, User.deleted == False ).first() def update_user(self, id: UUID, update_data: dict) -> User: user = self.get_by_id(id) if not user: return None for field, value in update_data.items(): setattr(user, field, value) self.db.commit() self.db.refresh(user) return user