from datetime import date, datetime from typing import ClassVar from uuid import UUID, uuid4 from sqlalchemy import Column, DateTime, String from sqlmodel import Field, SQLModel from .base import utc_now from .domain import Domain from .enums import SexAtBirth class UserProfile(SQLModel, table=True): __tablename__ = "user_profiles" __domains__: ClassVar[frozenset[Domain]] = frozenset( {Domain.HEALTH, Domain.SKINCARE} ) id: UUID = Field(default_factory=uuid4, primary_key=True) birth_date: date | None = Field(default=None) sex_at_birth: SexAtBirth | None = Field( default=None, sa_column=Column(String(length=16), nullable=True, index=True), ) created_at: datetime = Field(default_factory=utc_now, nullable=False) updated_at: datetime = Field( default_factory=utc_now, sa_column=Column( DateTime(timezone=True), default=utc_now, onupdate=utc_now, nullable=False, ), )