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."""