innercontext/backend/innercontext/models/profile.py

35 lines
1,014 B
Python

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,
),
)