import datetime as dt from sqlmodel import Field, SQLModel def local_now() -> dt.datetime: """Horodatage naïf en heure locale (Europe/Paris via le TZ du conteneur). Toutes les dates/heures du domaine sont naïves et interprétées en heure locale : créneaux, disponibilités, et champs d'audit. """ return dt.datetime.now() class TimestampMixin(SQLModel): """Champs d'audit communs. Hérité par les tables, pas une table. Pas de `sa_column=` ici : une instance `Column` ne peut pas être partagée entre plusieurs tables. On laisse SQLModel générer une colonne par table et on passe seulement des `sa_column_kwargs`. """ created_at: dt.datetime = Field(default_factory=local_now, nullable=False) updated_at: dt.datetime = Field( default_factory=local_now, nullable=False, sa_column_kwargs={"onupdate": local_now}, )