from __future__ import annotations from datetime import datetime from sqlalchemy import func from sqlmodel import Field, SQLModel class TimestampMixin(SQLModel): created_at: datetime = Field( default_factory=datetime.utcnow, sa_column_kwargs={"server_default": func.now()}, ) updated_at: datetime = Field( default_factory=datetime.utcnow, sa_column_kwargs={"server_default": func.now(), "onupdate": func.now()}, ) class SoftDeleteMixin(SQLModel): is_deleted: bool = Field(default=False) deleted_at: datetime | None = Field(default=None)