fix: add missing relationship stubs to resolve SQLAlchemy mapper errors
- Purchase.user relationship to satisfy User.purchases back_populates - Store.user_accounts relationship to satisfy UserStoreAccount.store back_populates Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
@@ -9,6 +9,8 @@ import uuid
|
|||||||
from datetime import date, datetime
|
from datetime import date, datetime
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import (
|
from sqlalchemy import (
|
||||||
JSON,
|
JSON,
|
||||||
Date,
|
Date,
|
||||||
@@ -20,10 +22,13 @@ from sqlalchemy import (
|
|||||||
UniqueConstraint,
|
UniqueConstraint,
|
||||||
func,
|
func,
|
||||||
)
|
)
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
|
|
||||||
from receiptwitness.shared.models.base import Base, TimestampMixin, UUIDPrimaryKeyMixin
|
from receiptwitness.shared.models.base import Base, TimestampMixin, UUIDPrimaryKeyMixin
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from receiptwitness.shared.models.user import User
|
||||||
|
|
||||||
|
|
||||||
class Purchase(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
class Purchase(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
||||||
"""Stub: a shopping trip/receipt. Full definition in cartsnitch/common."""
|
"""Stub: a shopping trip/receipt. Full definition in cartsnitch/common."""
|
||||||
@@ -52,6 +57,8 @@ class Purchase(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
|||||||
UniqueConstraint("user_id", "store_id", "receipt_id", name="uq_purchase_receipt"),
|
UniqueConstraint("user_id", "store_id", "receipt_id", name="uq_purchase_receipt"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
user: Mapped["User"] = relationship(back_populates="purchases")
|
||||||
|
|
||||||
|
|
||||||
class PurchaseItem(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
class PurchaseItem(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
||||||
"""Stub: a line item on a receipt. Full definition in cartsnitch/common."""
|
"""Stub: a line item on a receipt. Full definition in cartsnitch/common."""
|
||||||
|
|||||||
@@ -7,12 +7,17 @@ UserStoreAccount. The canonical definitions live in cartsnitch/common.
|
|||||||
|
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import Float, ForeignKey, String
|
from sqlalchemy import Float, ForeignKey, String
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
|
|
||||||
from receiptwitness.shared.constants import StoreSlug
|
from receiptwitness.shared.constants import StoreSlug
|
||||||
from receiptwitness.shared.models.base import Base, TimestampMixin, UUIDPrimaryKeyMixin
|
from receiptwitness.shared.models.base import Base, TimestampMixin, UUIDPrimaryKeyMixin
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from receiptwitness.shared.models.user import UserStoreAccount
|
||||||
|
|
||||||
|
|
||||||
class Store(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
class Store(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
||||||
"""Stub: canonical retailer. Full definition in cartsnitch/common."""
|
"""Stub: canonical retailer. Full definition in cartsnitch/common."""
|
||||||
@@ -24,6 +29,8 @@ class Store(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
|||||||
logo_url: Mapped[str | None] = mapped_column(String(500))
|
logo_url: Mapped[str | None] = mapped_column(String(500))
|
||||||
website_url: Mapped[str | None] = mapped_column(String(500))
|
website_url: Mapped[str | None] = mapped_column(String(500))
|
||||||
|
|
||||||
|
user_accounts: Mapped[list["UserStoreAccount"]] = relationship(back_populates="store")
|
||||||
|
|
||||||
|
|
||||||
class StoreLocation(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
class StoreLocation(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
||||||
"""Stub: physical store location. Full definition in cartsnitch/common."""
|
"""Stub: physical store location. Full definition in cartsnitch/common."""
|
||||||
|
|||||||
Reference in New Issue
Block a user