Backend: Product.updated_at (Zuletzt geaendert)
Neue Spalte updated_at, die bei jeder Stammdaten-Aenderung automatisch nachzieht (onupdate). Migration legt sie nullable an und setzt Altbestaende auf created_at. In ProductOut ausgegeben - Basis fuer eine "Zuletzt geaendert"-Spalte im Web. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -179,6 +179,11 @@ def _ensure_schema() -> None:
|
||||
# Verbrauchsgegenstand: Gegenstand wie ein Lebensmittel führen (Chargen).
|
||||
"ALTER TABLE products ADD COLUMN IF NOT EXISTS bulk BOOLEAN "
|
||||
"NOT NULL DEFAULT FALSE",
|
||||
# Zeitpunkt der letzten Änderung an den Stammdaten (für „Zuletzt geändert").
|
||||
# Nullable anlegen und Altbestände auf created_at zurücksetzen; neue Zeilen
|
||||
# füllt die ORM-Spalte (default/onupdate).
|
||||
"ALTER TABLE products ADD COLUMN IF NOT EXISTS updated_at TIMESTAMPTZ",
|
||||
"UPDATE products SET updated_at = created_at WHERE updated_at IS NULL",
|
||||
# Kaufpreis (in Rappen/Cent) und Währung am Einzelstück.
|
||||
"ALTER TABLE items ADD COLUMN IF NOT EXISTS price_cents INTEGER",
|
||||
"ALTER TABLE items ADD COLUMN IF NOT EXISTS currency VARCHAR(3)",
|
||||
|
||||
@@ -258,6 +258,11 @@ class Product(Base):
|
||||
bulk: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False)
|
||||
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=_now)
|
||||
# Zeitpunkt der letzten Änderung an den Stammdaten des Artikels (nicht am
|
||||
# Bestand). Wird bei jedem ORM-UPDATE der Zeile automatisch nachgezogen.
|
||||
updated_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True), default=_now, onupdate=_now
|
||||
)
|
||||
|
||||
group: Mapped[Group | None] = relationship(back_populates="products")
|
||||
category: Mapped[Category | None] = relationship()
|
||||
|
||||
@@ -355,6 +355,7 @@ class ProductOut(BaseModel):
|
||||
individual: bool = False
|
||||
bulk: bool = False
|
||||
created_at: datetime
|
||||
updated_at: datetime | None = None
|
||||
# angereichert:
|
||||
stock: float = 0.0
|
||||
expired_count: int = 0
|
||||
|
||||
Reference in New Issue
Block a user