from __future__ import annotations from dataclasses import dataclass from fastapi import Header from app.config import settings @dataclass(frozen=True) class ProjectContext: tenant_id: str project_id: str graph_name: str def get_project_context( x_kg_tenant_id: str | None = Header(default=None, alias="X-KG-Tenant-Id"), x_kg_project_id: str | None = Header(default=None, alias="X-KG-Project-Id"), x_kg_graph_name: str | None = Header(default=None, alias="X-KG-Graph-Name"), ) -> ProjectContext: project_id = (x_kg_project_id or settings.default_project).strip() return ProjectContext( tenant_id=(x_kg_tenant_id or settings.default_tenant).strip(), project_id=project_id, graph_name=(x_kg_graph_name or project_id or settings.falkordb_graph).strip(), )