Coverage for src/lexigram/admin/config/integrations.py: 44%

43 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-24 23:31 +0800

1"""Integration configurations for cache, tasks, search, resilience, storage, features, and monitoring.""" 

2 

3from __future__ import annotations 

4 

5from dataclasses import dataclass 

6 

7from lexigram.domain import DomainModel 

8from lexigram.validation import Field 

9 

10 

11@dataclass(init=False) 

12class CacheIntegrationConfig(DomainModel): 

13 """Configuration for the optional cache integration. 

14 

15 Controls ``lexigram-cache`` usage from admin resources. 

16 """ 

17 

18 enabled: bool = Field(default=True) 

19 default_ttl_seconds: int = Field(default=60, ge=1) 

20 key_prefix: str = Field(default="admin") 

21 

22 

23@dataclass(init=False) 

24class TasksIntegrationConfig(DomainModel): 

25 """Configuration for the optional tasks integration. 

26 

27 Controls ``lexigram-tasks`` usage from admin bulk actions. 

28 """ 

29 

30 enabled: bool = Field(default=True) 

31 bulk_threshold: int = Field(default=25, ge=1) 

32 

33 

34@dataclass(init=False) 

35class SearchIntegrationConfig(DomainModel): 

36 """Configuration for the optional search integration.""" 

37 

38 enabled: bool = Field(default=True) 

39 fallback_to_like: bool = Field(default=True) 

40 

41 

42@dataclass(init=False) 

43class ResilienceIntegrationConfig(DomainModel): 

44 """Configuration for the optional resilience integration.""" 

45 

46 enabled: bool = Field(default=True) 

47 retry_max_attempts: int = Field(default=3, ge=1) 

48 circuit_failure_threshold: int = Field(default=5, ge=1) 

49 

50 

51@dataclass(init=False) 

52class StorageIntegrationConfig(DomainModel): 

53 """Configuration for the optional storage integration.""" 

54 

55 enabled: bool = Field(default=True) 

56 presigned_url_expiry: int = Field(default=3600, ge=60) 

57 

58 

59@dataclass(init=False) 

60class FeaturesIntegrationConfig(DomainModel): 

61 """Configuration for the optional feature-flags integration.""" 

62 

63 enabled: bool = Field(default=True) 

64 

65 

66@dataclass(init=False) 

67class MonitorIntegrationConfig(DomainModel): 

68 """Configuration for the optional monitoring integration.""" 

69 

70 enabled: bool = Field(default=True) 

71 

72 

73@dataclass(init=False) 

74class AdminIntegrationsConfig(DomainModel): 

75 """Aggregate configuration for all optional integrations.""" 

76 

77 cache: CacheIntegrationConfig = Field(default_factory=CacheIntegrationConfig) 

78 tasks: TasksIntegrationConfig = Field(default_factory=TasksIntegrationConfig) 

79 search: SearchIntegrationConfig = Field(default_factory=SearchIntegrationConfig) 

80 resilience: ResilienceIntegrationConfig = Field( 

81 default_factory=ResilienceIntegrationConfig, 

82 ) 

83 storage: StorageIntegrationConfig = Field( 

84 default_factory=StorageIntegrationConfig, 

85 ) 

86 features: FeaturesIntegrationConfig = Field( 

87 default_factory=FeaturesIntegrationConfig, 

88 ) 

89 monitor: MonitorIntegrationConfig = Field(default_factory=MonitorIntegrationConfig) 

90 enabled: bool = Field(default=True) 

91 

92 model_config = {"extra": "forbid"}