23 lines
599 B
Python
23 lines
599 B
Python
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)
|