129 lines
3.2 KiB
Python
129 lines
3.2 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Any, Literal
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class SearchExternalReferenceResponse(BaseModel):
|
|
system: str
|
|
object_type: str
|
|
object_id: str
|
|
maturity: str
|
|
connector_id: str | None = None
|
|
canonical_url: str | None = None
|
|
version: str | None = None
|
|
etag: str | None = None
|
|
observed_at: str | None = None
|
|
metadata: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class SearchResultResponse(BaseModel):
|
|
provider_id: str
|
|
module_id: str
|
|
resource_type: str
|
|
resource_id: str
|
|
title: str
|
|
summary: str | None = None
|
|
url: str
|
|
score: float = 0.0
|
|
highlights: list[str] = Field(default_factory=list)
|
|
breadcrumbs: list[str] = Field(default_factory=list)
|
|
external_reference: SearchExternalReferenceResponse | None = None
|
|
metadata: dict[str, Any] = Field(default_factory=dict)
|
|
source_revision: str | None = None
|
|
provenance: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class SearchProviderDiagnosticResponse(BaseModel):
|
|
provider_id: str
|
|
status: Literal["unavailable"]
|
|
message: str
|
|
|
|
|
|
class SearchResponse(BaseModel):
|
|
query: str
|
|
results: list[SearchResultResponse]
|
|
diagnostics: list[SearchProviderDiagnosticResponse] = Field(default_factory=list)
|
|
next_cursor: str | None = None
|
|
has_more: bool = False
|
|
|
|
|
|
class SearchProviderResponse(BaseModel):
|
|
id: str
|
|
module_id: str
|
|
resource_types: list[str]
|
|
order: int
|
|
|
|
|
|
class SearchResourceTypeResponse(BaseModel):
|
|
provider_id: str
|
|
module_id: str
|
|
resource_type: str
|
|
label: str
|
|
order: int
|
|
|
|
|
|
class SearchProviderListResponse(BaseModel):
|
|
providers: list[SearchProviderResponse]
|
|
resources: list[SearchResourceTypeResponse] = Field(default_factory=list)
|
|
|
|
|
|
class SearchIndexStateResponse(BaseModel):
|
|
provider_id: str
|
|
module_id: str
|
|
resource_type: str
|
|
index_version: int
|
|
status: str
|
|
checkpoint_cursor: str | None = None
|
|
high_watermark: str | None = None
|
|
last_change_cursor: str | None = None
|
|
indexed_documents: int = 0
|
|
rejected_documents: int = 0
|
|
rebuild_started_at: datetime | None = None
|
|
rebuild_completed_at: datetime | None = None
|
|
last_success_at: datetime | None = None
|
|
last_error: str | None = None
|
|
|
|
|
|
class SearchDiagnosticsResponse(BaseModel):
|
|
backend: str
|
|
trigram_available: bool
|
|
queue: dict[str, int] = Field(default_factory=dict)
|
|
queue_oldest_age_seconds: float | None = None
|
|
states: list[SearchIndexStateResponse] = Field(
|
|
default_factory=list
|
|
)
|
|
|
|
|
|
class SearchRebuildResponse(BaseModel):
|
|
state: SearchIndexStateResponse
|
|
|
|
|
|
class SearchChangeDispatchResponse(BaseModel):
|
|
selected: int
|
|
applied: int
|
|
retrying: int
|
|
quarantined: int
|
|
|
|
|
|
class SearchModuleReconcileResponse(BaseModel):
|
|
disabled_documents: int
|
|
enabled_documents: int
|
|
|
|
|
|
__all__ = [
|
|
"SearchProviderDiagnosticResponse",
|
|
"SearchProviderListResponse",
|
|
"SearchProviderResponse",
|
|
"SearchResourceTypeResponse",
|
|
"SearchChangeDispatchResponse",
|
|
"SearchDiagnosticsResponse",
|
|
"SearchIndexStateResponse",
|
|
"SearchModuleReconcileResponse",
|
|
"SearchRebuildResponse",
|
|
"SearchResponse",
|
|
"SearchResultResponse",
|
|
]
|