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

1from typing import Annotated, Literal 1a

2 

3from annotated_types import Gt, Le 1a

4from pydantic.types import UUID4 1a

5 

6from polar.kit.schemas import Schema 1a

7from polar.models.benefit import BenefitType 1a

8 

9from ..base.schemas import ( 1a

10 BenefitBase, 

11 BenefitCreateBase, 

12 BenefitSubscriberBase, 

13 BenefitUpdateBase, 

14) 

15 

16INT_MAX_VALUE = 2_147_483_647 1a

17 

18 

19class BenefitMeterCreditProperties(Schema): 1a

20 """ 

21 Properties for a benefit of type `meter_unit`. 

22 """ 

23 

24 units: int 1a

25 rollover: bool 1a

26 meter_id: UUID4 1a

27 

28 

29class BenefitMeterCreditCreateProperties(Schema): 1a

30 """ 

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

32 """ 

33 

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

35 rollover: bool 1a

36 meter_id: UUID4 1a

37 

38 

39class BenefitMeterCreditSubscriberProperties(Schema): 1a

40 """ 

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

42 """ 

43 

44 units: int 1a

45 rollover: bool 1a

46 meter_id: UUID4 1a

47 

48 

49class BenefitMeterCreditCreate(BenefitCreateBase): 1a

50 """ 

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

52 """ 

53 

54 type: Literal[BenefitType.meter_credit] 1a

55 properties: BenefitMeterCreditCreateProperties 1a

56 

57 

58class BenefitMeterCreditUpdate(BenefitUpdateBase): 1a

59 type: Literal[BenefitType.meter_credit] 1a

60 properties: BenefitMeterCreditCreateProperties | None = None 1a

61 

62 

63class BenefitMeterCredit(BenefitBase): 1a

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] 1a

71 properties: BenefitMeterCreditProperties 1a

72 

73 

74class BenefitMeterCreditSubscriber(BenefitSubscriberBase): 1a

75 type: Literal[BenefitType.meter_credit] 1a

76 properties: BenefitMeterCreditSubscriberProperties 1a