gateway.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from pydantic import BaseModel
  2. from datetime import datetime
  3. from typing import TYPE_CHECKING
  4. if TYPE_CHECKING:
  5. from app.db.models import GatewayRequestAudit
  6. class DownstreamServiceHealth(BaseModel):
  7. service: str
  8. status: str
  9. url: str
  10. status_code: int | None = None
  11. error_message: str | None = None
  12. class GatewayServicesHealthResponse(BaseModel):
  13. service: str = "api-gateway"
  14. status: str
  15. downstream_services: list[DownstreamServiceHealth]
  16. class GatewayRequestAuditResponse(BaseModel):
  17. id: str
  18. tenant_id: str
  19. request_id: str
  20. method: str
  21. path: str
  22. query_string: str | None = None
  23. target_service: str | None = None
  24. target_url: str | None = None
  25. status_code: int | None = None
  26. duration_ms: int
  27. client_host: str | None = None
  28. user_agent: str | None = None
  29. error_message: str | None = None
  30. created_time: datetime
  31. @classmethod
  32. def from_entity(cls, entity: "GatewayRequestAudit") -> "GatewayRequestAuditResponse":
  33. return cls.model_validate(entity, from_attributes=True)