import calendar from datetime import datetime, date from typing import Optional from pydantic import BaseModel from app.user.model import User, Sex class UserCreationModel(BaseModel): username: str email: str password: str given_name: str family_name: Optional[str] sex: str birthdate: Optional[int] def to_entity(self) -> User: birthdate = None if self.birthdate is not None: birthdate = date.fromtimestamp(self.birthdate) return User( username=self.username, email=self.email, password=self.password, given_name=self.given_name, family_name=self.family_name, sex=Sex[self.sex], birthdate=birthdate ) class UserResourceModel(BaseModel): id: int username: str email: str given_name: str family_name: Optional[str] sex: str birthdate: Optional[int] @staticmethod def from_entity(user: User): birthdate = None if user.birthdate is not None: birthdate = calendar.timegm(user.birthdate.timetuple()) return UserResourceModel( id=user.id, username=user.username, email=user.email, given_name=user.given_name, family_name=user.family_name, sex=user.sex.name, birthdate=birthdate )