Coverage for polar/models/pledge_transaction.py: 100%
25 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 17:15 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 17:15 +0000
1from enum import StrEnum 1ab
2from uuid import UUID 1ab
4from sqlalchemy import BigInteger, ForeignKey, String, Uuid 1ab
5from sqlalchemy.orm import Mapped, declared_attr, mapped_column, relationship 1ab
7from polar.kit.db.models import RecordModel 1ab
8from polar.models.issue_reward import IssueReward 1ab
9from polar.models.pledge import Pledge 1ab
12class PledgeTransactionType(StrEnum): 1ab
13 pledge = "pledge" 1ab
14 transfer = "transfer" 1ab
15 refund = "refund" 1ab
16 disputed = "disputed" 1ab
19class PledgeTransaction(RecordModel): 1ab
20 __tablename__ = "pledge_transactions" 1ab
22 pledge_id: Mapped[UUID] = mapped_column( 1ab
23 Uuid, ForeignKey("pledges.id"), nullable=False
24 )
25 type: Mapped[PledgeTransactionType] = mapped_column(String, nullable=False) 1ab
26 amount: Mapped[int] = mapped_column(BigInteger, nullable=False) 1ab
27 transaction_id: Mapped[str | None] = mapped_column( 1ab
28 String, nullable=True, default=None
29 )
30 issue_reward_id: Mapped[UUID | None] = mapped_column( 1ab
31 Uuid, ForeignKey("issue_rewards.id"), nullable=True, default=None
32 )
34 @declared_attr 1ab
35 def pledge(cls) -> Mapped[Pledge]: 1ab
36 return relationship( 1ab
37 Pledge,
38 lazy="raise",
39 )
41 @declared_attr 1ab
42 def issue_reward(cls) -> Mapped[IssueReward]: 1ab
43 return relationship( 1ab
44 IssueReward,
45 lazy="raise",
46 )