Coverage for src/lexigram/admin/config/tenancy.py: 23%
13 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"""Multi-tenancy configuration."""
3from __future__ import annotations
5from dataclasses import dataclass
7from lexigram.domain import DomainModel
8from lexigram.validation import Field
11@dataclass(init=False)
12class TenancyConfig(DomainModel):
13 """Multi-tenancy configuration for admin.
15 Controls tenant resolution, data isolation, and route scoping.
17 Attributes:
18 enabled: Enable multi-tenancy support.
19 tenant_field: Field name used for tenant data filtering (default ``"tenant_id"``).
20 header_name: HTTP header name for tenant ID resolution (default ``"x-tenant-id"``).
21 cookie_name: Cookie name for tenant ID resolution (default ``"admin_tenant"``).
22 default_tenant_id: Fallback tenant ID when none can be resolved.
23 route_prefix_template: If set (e.g. ``"{tenant}"``), routes are prefixed
24 with the resolved tenant ID. Empty means no route prefix.
25 """
27 enabled: bool = Field(default=False)
28 tenant_field: str = Field(default="tenant_id")
29 header_name: str = Field(default="x-tenant-id")
30 cookie_name: str = Field(default="admin_tenant")
31 default_tenant_id: str = Field(default="")
32 route_prefix_template: str = Field(default="")
34 model_config = {"extra": "forbid"}