From 17c401f056f49c8facb6a85ba9d0b54b74f89659 Mon Sep 17 00:00:00 2001 From: CartSnitch Engineer Bot Date: Wed, 1 Apr 2026 19:36:21 +0000 Subject: [PATCH] fix(api): remove TimestampMixin from models whose DB tables lack timestamp columns Remove TimestampMixin (created_at/updated_at) from Purchase, PurchaseItem, PriceHistory, Coupon, and ShrinkflationEvent models since their PostgreSQL tables do not have those columns. This was causing 500 errors on /api/v1/purchases and /api/v1/purchases/stats. Co-Authored-By: Paperclip --- src/cartsnitch_api/models/coupon.py | 4 ++-- src/cartsnitch_api/models/price.py | 4 ++-- src/cartsnitch_api/models/purchase.py | 6 +++--- src/cartsnitch_api/models/shrinkflation.py | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/cartsnitch_api/models/coupon.py b/src/cartsnitch_api/models/coupon.py index df2630a..eb230ea 100644 --- a/src/cartsnitch_api/models/coupon.py +++ b/src/cartsnitch_api/models/coupon.py @@ -9,14 +9,14 @@ from sqlalchemy import Boolean, Date, DateTime, ForeignKey, Numeric, String from sqlalchemy.orm import Mapped, mapped_column, relationship from cartsnitch_api.constants import DiscountType -from cartsnitch_api.models.base import Base, TimestampMixin, UUIDPrimaryKeyMixin +from cartsnitch_api.models.base import Base, UUIDPrimaryKeyMixin if TYPE_CHECKING: from cartsnitch_api.models.product import NormalizedProduct from cartsnitch_api.models.store import Store -class Coupon(UUIDPrimaryKeyMixin, TimestampMixin, Base): +class Coupon(UUIDPrimaryKeyMixin, Base): """A coupon or deal for a product at a store.""" __tablename__ = "coupons" diff --git a/src/cartsnitch_api/models/price.py b/src/cartsnitch_api/models/price.py index 7da0fa6..47373dd 100644 --- a/src/cartsnitch_api/models/price.py +++ b/src/cartsnitch_api/models/price.py @@ -9,7 +9,7 @@ from sqlalchemy import Date, ForeignKey, Index, Numeric, String from sqlalchemy.orm import Mapped, mapped_column, relationship from cartsnitch_api.constants import PriceSource -from cartsnitch_api.models.base import Base, TimestampMixin, UUIDPrimaryKeyMixin +from cartsnitch_api.models.base import Base, UUIDPrimaryKeyMixin if TYPE_CHECKING: from cartsnitch_api.models.product import NormalizedProduct @@ -17,7 +17,7 @@ if TYPE_CHECKING: from cartsnitch_api.models.store import Store -class PriceHistory(UUIDPrimaryKeyMixin, TimestampMixin, Base): +class PriceHistory(UUIDPrimaryKeyMixin, Base): """A single price observation for a product at a store on a date.""" __tablename__ = "price_history" diff --git a/src/cartsnitch_api/models/purchase.py b/src/cartsnitch_api/models/purchase.py index 5a56cba..26aa09b 100644 --- a/src/cartsnitch_api/models/purchase.py +++ b/src/cartsnitch_api/models/purchase.py @@ -18,7 +18,7 @@ from sqlalchemy import ( ) from sqlalchemy.orm import Mapped, mapped_column, relationship -from cartsnitch_api.models.base import Base, TimestampMixin, UUIDPrimaryKeyMixin +from cartsnitch_api.models.base import Base, UUIDPrimaryKeyMixin if TYPE_CHECKING: from cartsnitch_api.models.price import PriceHistory @@ -27,7 +27,7 @@ if TYPE_CHECKING: from cartsnitch_api.models.user import User -class Purchase(UUIDPrimaryKeyMixin, TimestampMixin, Base): +class Purchase(UUIDPrimaryKeyMixin, Base): """A single shopping trip / receipt.""" __tablename__ = "purchases" @@ -61,7 +61,7 @@ class Purchase(UUIDPrimaryKeyMixin, TimestampMixin, Base): ) -class PurchaseItem(UUIDPrimaryKeyMixin, TimestampMixin, Base): +class PurchaseItem(UUIDPrimaryKeyMixin, Base): """Individual line item on a receipt.""" __tablename__ = "purchase_items" diff --git a/src/cartsnitch_api/models/shrinkflation.py b/src/cartsnitch_api/models/shrinkflation.py index 2ce6f9d..35f5d40 100644 --- a/src/cartsnitch_api/models/shrinkflation.py +++ b/src/cartsnitch_api/models/shrinkflation.py @@ -9,13 +9,13 @@ from sqlalchemy import Date, ForeignKey, Numeric, String from sqlalchemy.orm import Mapped, mapped_column, relationship from cartsnitch_api.constants import SizeUnit -from cartsnitch_api.models.base import Base, TimestampMixin, UUIDPrimaryKeyMixin +from cartsnitch_api.models.base import Base, UUIDPrimaryKeyMixin if TYPE_CHECKING: from cartsnitch_api.models.product import NormalizedProduct -class ShrinkflationEvent(UUIDPrimaryKeyMixin, TimestampMixin, Base): +class ShrinkflationEvent(UUIDPrimaryKeyMixin, Base): """Detected shrinkflation event — product size changed while price held or rose.""" __tablename__ = "shrinkflation_events"