Coverage for polar/benefit/registry.py: 93%
15 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 16:17 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 16:17 +0000
1from typing import Any 1a
3from polar.models.benefit import BenefitType 1a
4from polar.postgres import AsyncSession 1a
5from polar.redis import Redis 1a
7from .strategies import ( 1a
8 BenefitActionRequiredError,
9 BenefitGrantProperties,
10 BenefitProperties,
11 BenefitPropertiesValidationError,
12 BenefitRetriableError,
13 BenefitServiceError,
14 BenefitServiceProtocol,
15)
16from .strategies.custom.service import BenefitCustomService 1a
17from .strategies.discord.service import BenefitDiscordService 1a
18from .strategies.downloadables.service import BenefitDownloadablesService 1a
19from .strategies.github_repository.service import BenefitGitHubRepositoryService 1a
20from .strategies.license_keys.service import BenefitLicenseKeysService 1a
21from .strategies.meter_credit.service import BenefitMeterCreditService 1a
23_STRATEGY_CLASS_MAP: dict[ 1a
24 BenefitType,
25 type[BenefitServiceProtocol[Any, Any]],
26] = {
27 BenefitType.custom: BenefitCustomService,
28 BenefitType.discord: BenefitDiscordService,
29 BenefitType.github_repository: BenefitGitHubRepositoryService,
30 BenefitType.downloadables: BenefitDownloadablesService,
31 BenefitType.license_keys: BenefitLicenseKeysService,
32 BenefitType.meter_credit: BenefitMeterCreditService,
33}
36def get_benefit_strategy( 1a
37 type: BenefitType, session: AsyncSession, redis: Redis
38) -> BenefitServiceProtocol[BenefitProperties, BenefitGrantProperties]:
39 return _STRATEGY_CLASS_MAP[type](session, redis)
42__all__ = [ 1a
43 "BenefitActionRequiredError",
44 "BenefitServiceProtocol",
45 "BenefitPropertiesValidationError",
46 "BenefitRetriableError",
47 "BenefitServiceError",
48 "get_benefit_strategy",
49]