Source code for sqldbagent.introspect.base
"""Introspection protocols."""
from __future__ import annotations
from typing import Protocol
from sqldbagent.core.models.catalog import (
DatabaseModel,
SchemaModel,
ServerModel,
TableModel,
ViewModel,
)
[docs]
class InspectionService(Protocol):
"""Minimal shared inspection contract for initial surfaces."""
[docs]
def inspect_server(self) -> ServerModel:
"""Return normalized server metadata."""
[docs]
def inspect_database(self, database: str | None = None) -> DatabaseModel:
"""Return normalized database metadata."""
[docs]
def inspect_schema(self, schema: str) -> SchemaModel:
"""Return normalized schema metadata."""
[docs]
def list_databases(self) -> list[str]:
"""Return database names visible to the datasource."""
[docs]
def list_schemas(self, database: str | None = None) -> list[str]:
"""Return schema names for an optional database."""
[docs]
def list_tables(self, schema: str | None = None) -> list[str]:
"""Return table names for an optional schema."""
[docs]
def list_views(self, schema: str | None = None) -> list[str]:
"""Return view names for an optional schema."""
[docs]
def describe_table(self, table_name: str, schema: str | None = None) -> TableModel:
"""Return normalized table metadata."""
[docs]
def describe_view(self, view_name: str, schema: str | None = None) -> ViewModel:
"""Return normalized view metadata."""