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
« 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."""
3from __future__ import annotations
5from dataclasses import dataclass
7from lexigram.domain import DomainModel
8from lexigram.validation import Field
11@dataclass(init=False)
12class CacheIntegrationConfig(DomainModel):
13 """Configuration for the optional cache integration.
15 Controls ``lexigram-cache`` usage from admin resources.
16 """
18 enabled: bool = Field(default=True)
19 default_ttl_seconds: int = Field(default=60, ge=1)
20 key_prefix: str = Field(default="admin")
23@dataclass(init=False)
24class TasksIntegrationConfig(DomainModel):
25 """Configuration for the optional tasks integration.
27 Controls ``lexigram-tasks`` usage from admin bulk actions.
28 """
30 enabled: bool = Field(default=True)
31 bulk_threshold: int = Field(default=25, ge=1)
34@dataclass(init=False)
35class SearchIntegrationConfig(DomainModel):
36 """Configuration for the optional search integration."""
38 enabled: bool = Field(default=True)
39 fallback_to_like: bool = Field(default=True)
42@dataclass(init=False)
43class ResilienceIntegrationConfig(DomainModel):
44 """Configuration for the optional resilience integration."""
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)
51@dataclass(init=False)
52class StorageIntegrationConfig(DomainModel):
53 """Configuration for the optional storage integration."""
55 enabled: bool = Field(default=True)
56 presigned_url_expiry: int = Field(default=3600, ge=60)
59@dataclass(init=False)
60class FeaturesIntegrationConfig(DomainModel):
61 """Configuration for the optional feature-flags integration."""
63 enabled: bool = Field(default=True)
66@dataclass(init=False)
67class MonitorIntegrationConfig(DomainModel):
68 """Configuration for the optional monitoring integration."""
70 enabled: bool = Field(default=True)
73@dataclass(init=False)
74class AdminIntegrationsConfig(DomainModel):
75 """Aggregate configuration for all optional integrations."""
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)
92 model_config = {"extra": "forbid"}