74 lines
1.5 KiB
Python
74 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from enum import Enum
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class QueryType(str, Enum):
|
|
search = "search"
|
|
vsearch = "vsearch"
|
|
query = "query"
|
|
deep_search = "deep_search"
|
|
|
|
|
|
class QueryRequest(BaseModel):
|
|
branch: str | None = None
|
|
memory_profile: str | None = None
|
|
query_type: QueryType = QueryType.query
|
|
query: str = Field(min_length=1)
|
|
require_latest: bool = True
|
|
n: int = Field(default=5, ge=1, le=50)
|
|
debug: bool = False
|
|
|
|
|
|
class SyncRequest(BaseModel):
|
|
branch: str | None = None
|
|
memory_profile: str | None = None
|
|
require_latest: bool = True
|
|
|
|
|
|
class QueryResponse(BaseModel):
|
|
ok: bool
|
|
branch: str
|
|
resolved_workspace: str
|
|
commit_hash: str
|
|
synced_at: datetime
|
|
query_type: QueryType
|
|
results: Any
|
|
qmd_collection: str
|
|
debug: dict[str, Any] | None = None
|
|
|
|
|
|
class SyncResponse(BaseModel):
|
|
ok: bool
|
|
branch: str
|
|
resolved_workspace: str
|
|
commit_hash: str
|
|
synced_at: datetime
|
|
qmd_collection: str
|
|
debug: dict[str, Any] | None = None
|
|
|
|
|
|
class HealthResponse(BaseModel):
|
|
ok: bool
|
|
service: str
|
|
timestamp: datetime
|
|
|
|
|
|
class WorkspaceStatusItem(BaseModel):
|
|
branch: str
|
|
workspace: str
|
|
commit_hash: str
|
|
synced_at: datetime
|
|
qmd_collection: str
|
|
|
|
|
|
class StatusResponse(BaseModel):
|
|
ok: bool
|
|
default_branch: str
|
|
mirror_path: str
|
|
workspaces: list[WorkspaceStatusItem]
|