"""قراردادهای مشترک مربوط به Tenant.

هر سرویس برای تشخیص و انتقال tenant از این ثابت‌ها و ساختارها استفاده می‌کند
تا نام هدرها و کلیدها در همه‌جا یکسان باشد.
"""
from __future__ import annotations

from dataclasses import dataclass
from uuid import UUID

# نام هدرهای استاندارد تشخیص tenant (بین همه سرویس‌ها مشترک)
HEADER_TENANT_ID = "X-Tenant-ID"
HEADER_TENANT_SLUG = "X-Tenant-Slug"

# کلید ذخیره tenant در request.state
STATE_TENANT_ID = "tenant_id"
STATE_TENANT_SLUG = "tenant_slug"


@dataclass(frozen=True)
class TenantContext:
    """اطلاعات tenant جاری که در طول یک request حمل می‌شود."""

    tenant_id: UUID | None
    tenant_slug: str | None

    @property
    def is_resolved(self) -> bool:
        return self.tenant_id is not None
