| """ |
| api/routers/schema.py |
| POST /api/schema/ingest – manually trigger schema ingestion for a connector |
| GET /api/schema/{connector_id} – return schema summary |
| """ |
|
|
| from fastapi import APIRouter, HTTPException |
| from pydantic import BaseModel |
|
|
| from schema.ingestor import ingest_schema |
| from connectors.base import get_connector |
|
|
| router = APIRouter() |
|
|
|
|
| class IngestRequest(BaseModel): |
| connector_id: str |
|
|
|
|
| @router.post("/ingest") |
| async def trigger_ingest(req: IngestRequest): |
| try: |
| n = ingest_schema(req.connector_id) |
| except Exception as exc: |
| raise HTTPException(status_code=500, detail=str(exc)) |
| return {"connector_id": req.connector_id, "tables_ingested": n} |
|
|
|
|
| @router.get("/{connector_id:path}") |
| async def get_schema(connector_id: str): |
| try: |
| connector = get_connector(connector_id) |
| schema = connector.get_schema() |
| except Exception as exc: |
| raise HTTPException(status_code=400, detail=str(exc)) |
| return {"connector_id": connector_id, "tables": schema} |
|
|