Coverage for polar/benefit/strategies/meter_credit/schemas.py: 100%
31 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 typing import Annotated, Literal 1a
3from annotated_types import Gt, Le 1a
4from pydantic.types import UUID4 1a
6from polar.kit.schemas import Schema 1a
7from polar.models.benefit import BenefitType 1a
9from ..base.schemas import ( 1a
10 BenefitBase,
11 BenefitCreateBase,
12 BenefitSubscriberBase,
13 BenefitUpdateBase,
14)
16INT_MAX_VALUE = 2_147_483_647 1a
19class BenefitMeterCreditProperties(Schema): 1a
20 """
21 Properties for a benefit of type `meter_unit`.
22 """
24 units: int 1a
25 rollover: bool 1a
26 meter_id: UUID4 1a
29class BenefitMeterCreditCreateProperties(Schema): 1a
30 """
31 Properties for creating a benefit of type `meter_unit`.
32 """
34 units: Annotated[int, Gt(0), Le(INT_MAX_VALUE)] 1a
35 rollover: bool 1a
36 meter_id: UUID4 1a
39class BenefitMeterCreditSubscriberProperties(Schema): 1a
40 """
41 Properties available to subscribers for a benefit of type `meter_unit`.
42 """
44 units: int 1a
45 rollover: bool 1a
46 meter_id: UUID4 1a
49class BenefitMeterCreditCreate(BenefitCreateBase): 1a
50 """
51 Schema to create a benefit of type `meter_unit`.
52 """
54 type: Literal[BenefitType.meter_credit] 1a
55 properties: BenefitMeterCreditCreateProperties 1a
58class BenefitMeterCreditUpdate(BenefitUpdateBase): 1a
59 type: Literal[BenefitType.meter_credit] 1a
60 properties: BenefitMeterCreditCreateProperties | None = None 1a
63class BenefitMeterCredit(BenefitBase): 1a
64 """
65 A benefit of type `meter_unit`.
67 Use it to grant a number of units on a specific meter.
68 """
70 type: Literal[BenefitType.meter_credit] 1a
71 properties: BenefitMeterCreditProperties 1a
74class BenefitMeterCreditSubscriber(BenefitSubscriberBase): 1a
75 type: Literal[BenefitType.meter_credit] 1a
76 properties: BenefitMeterCreditSubscriberProperties 1a