32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
from sqlalchemy.orm import Session
|
|
|
|
from app.common.errors.app_error import ConflictAppError
|
|
from app.models.entities import User
|
|
from app.modules.users.repository import UsersRepository
|
|
|
|
|
|
class UsersService:
|
|
def __init__(self, db: Session) -> None:
|
|
self.db = db
|
|
self.repository = UsersRepository(db)
|
|
|
|
def update_profile(self, user: User, payload) -> dict:
|
|
if payload.username and payload.username != user.username:
|
|
existing = self.repository.get_by_username(payload.username)
|
|
if existing and existing.id != user.id:
|
|
raise ConflictAppError("username already exists", code=10011)
|
|
user.username = payload.username
|
|
if payload.nickname is not None:
|
|
user.nickname = payload.nickname
|
|
if payload.avatar_url is not None:
|
|
user.avatar_url = payload.avatar_url
|
|
self.db.commit()
|
|
return {
|
|
"publicId": user.public_id,
|
|
"username": user.username or "",
|
|
"nickname": user.nickname,
|
|
"avatarUrl": user.avatar_url,
|
|
"email": user.email or "",
|
|
}
|
|
|