Coverage for polar/models/discount_redemption.py: 91%
21 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 12:42 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 12:42 +0000
1from typing import TYPE_CHECKING
2from uuid import UUID
4from sqlalchemy import ForeignKey, Uuid
5from sqlalchemy.orm import Mapped, declared_attr, mapped_column, relationship
7from polar.kit.db.models import RecordModel
9if TYPE_CHECKING: 9 ↛ 10line 9 didn't jump to line 10 because the condition on line 9 was never true
10 from polar.models import Checkout, Discount, Subscription
13class DiscountRedemption(RecordModel):
14 __tablename__ = "discount_redemptions"
16 discount_id: Mapped[UUID] = mapped_column(
17 Uuid, ForeignKey("discounts.id", ondelete="cascade")
18 )
20 @declared_attr
21 def discount(cls) -> Mapped["Discount"]:
22 return relationship(
23 "Discount", lazy="raise", back_populates="discount_redemptions"
24 )
26 checkout_id: Mapped[UUID | None] = mapped_column(
27 Uuid, ForeignKey("checkouts.id", ondelete="cascade")
28 )
30 @declared_attr
31 def checkout(cls) -> Mapped["Checkout | None"]:
32 return relationship("Checkout", lazy="raise")
34 subscription_id: Mapped[UUID | None] = mapped_column(
35 Uuid, ForeignKey("subscriptions.id", ondelete="cascade")
36 )
38 @declared_attr
39 def subscription(cls) -> Mapped["Subscription | None"]:
40 return relationship("Subscription", lazy="raise")