from collections.abc import Mapping from typing import Optional from app.dao.parent import ParentDAO from app.service import get_db_session class ParentService: def __init__(self, db): self.dao = ParentDAO(db) def create( self, openid: str, unionid: Optional[str] = None, nickname: Optional[str] = None, avatar_url: Optional[str] = None, ) -> Mapping: user_id = self.dao.upsert(openid, unionid, nickname, avatar_url) return self.dao.get_by_id(user_id) def get(self, user_id: int) -> Optional[Mapping]: return self.dao.get_by_id(user_id) def update( self, user_id: int, nickname: Optional[str] = None, avatar_url: Optional[str] = None, phone: Optional[str] = None, ) -> Mapping: self.dao.update(user_id, nickname, avatar_url, phone) return self.dao.get_by_id(user_id)