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

1from typing import TYPE_CHECKING 

2from uuid import UUID 

3 

4from sqlalchemy import ForeignKey, Uuid 

5from sqlalchemy.orm import Mapped, declared_attr, mapped_column, relationship 

6 

7from polar.kit.db.models import RecordModel 

8 

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 

11 

12 

13class DiscountRedemption(RecordModel): 

14 __tablename__ = "discount_redemptions" 

15 

16 discount_id: Mapped[UUID] = mapped_column( 

17 Uuid, ForeignKey("discounts.id", ondelete="cascade") 

18 ) 

19 

20 @declared_attr 

21 def discount(cls) -> Mapped["Discount"]: 

22 return relationship( 

23 "Discount", lazy="raise", back_populates="discount_redemptions" 

24 ) 

25 

26 checkout_id: Mapped[UUID | None] = mapped_column( 

27 Uuid, ForeignKey("checkouts.id", ondelete="cascade") 

28 ) 

29 

30 @declared_attr 

31 def checkout(cls) -> Mapped["Checkout | None"]: 

32 return relationship("Checkout", lazy="raise") 

33 

34 subscription_id: Mapped[UUID | None] = mapped_column( 

35 Uuid, ForeignKey("subscriptions.id", ondelete="cascade") 

36 ) 

37 

38 @declared_attr 

39 def subscription(cls) -> Mapped["Subscription | None"]: 

40 return relationship("Subscription", lazy="raise")