18 lines
466 B
Python
18 lines
466 B
Python
"""Shared SQLModel base: UTC timestamps, no copy-paste across models."""
|
|
|
|
from datetime import UTC, datetime
|
|
|
|
from sqlalchemy import Column, DateTime
|
|
from sqlmodel import Field
|
|
|
|
|
|
def utcnow() -> datetime:
|
|
return datetime.now(UTC)
|
|
|
|
|
|
def ts_column() -> Column:
|
|
return Column(DateTime(timezone=True))
|
|
|
|
|
|
def ts_field(*, default_factory=utcnow) -> datetime: # type: ignore[no-untyped-def]
|
|
return Field(default_factory=default_factory, sa_column=ts_column())
|