Coverage for polar/benefit/strategies/meter_credit/schemas.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-07 12:42 +0000

1from typing import Annotated, Literal 

2 

3from annotated_types import Gt, Le 

4from pydantic.types import UUID4 

5 

6from polar.kit.schemas import Schema 

7from polar.models.benefit import BenefitType 

8 

9from ..base.schemas import ( 

10 BenefitBase, 

11 BenefitCreateBase, 

12 BenefitSubscriberBase, 

13 BenefitUpdateBase, 

14) 

15 

16INT_MAX_VALUE = 2_147_483_647 

17 

18 

19class BenefitMeterCreditProperties(Schema): 

20 """ 

21 Properties for a benefit of type `meter_unit`. 

22 """ 

23 

24 units: int 

25 rollover: bool 

26 meter_id: UUID4 

27 

28 

29class BenefitMeterCreditCreateProperties(Schema): 

30 """ 

31 Properties for creating a benefit of type `meter_unit`. 

32 """ 

33 

34 units: Annotated[int, Gt(0), Le(INT_MAX_VALUE)] 

35 rollover: bool 

36 meter_id: UUID4 

37 

38 

39class BenefitMeterCreditSubscriberProperties(Schema): 

40 """ 

41 Properties available to subscribers for a benefit of type `meter_unit`. 

42 """ 

43 

44 units: int 

45 rollover: bool 

46 meter_id: UUID4 

47 

48 

49class BenefitMeterCreditCreate(BenefitCreateBase): 

50 """ 

51 Schema to create a benefit of type `meter_unit`. 

52 """ 

53 

54 type: Literal[BenefitType.meter_credit] 

55 properties: BenefitMeterCreditCreateProperties 

56 

57 

58class BenefitMeterCreditUpdate(BenefitUpdateBase): 

59 type: Literal[BenefitType.meter_credit] 

60 properties: BenefitMeterCreditCreateProperties | None = None 

61 

62 

63class BenefitMeterCredit(BenefitBase): 

64 """ 

65 A benefit of type `meter_unit`. 

66 

67 Use it to grant a number of units on a specific meter. 

68 """ 

69 

70 type: Literal[BenefitType.meter_credit] 

71 properties: BenefitMeterCreditProperties 

72 

73 

74class BenefitMeterCreditSubscriber(BenefitSubscriberBase): 

75 type: Literal[BenefitType.meter_credit] 

76 properties: BenefitMeterCreditSubscriberProperties