O2Sound_ver2_final/backend/app/repositories/user_repository.py

62 lines
1.9 KiB
Python

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