"""Additive schema ensure and diff helpers."""
from collections.abc import Mapping, Sequence
from typing import TYPE_CHECKING, Any
from sqlglot import exp, parse
from sqlspec.builder import AlterTable, CreateTable, sql
if TYPE_CHECKING:
from collections.abc import Awaitable, Callable
__all__ = ("SchemaEnsureResult", "SchemaTarget", "ensure_schema_async", "ensure_schema_sync")
class SchemaTarget:
"""Describe one table's target schema.
Args:
table_name: Unqualified table name used for introspection and DDL.
create_table: Builder containing the target columns and create DDL.
schema: Optional schema containing the table.
"""
__slots__ = ("create_statement", "create_table", "schema", "table_name")
def __init__(
self,
table_name: str,
create_table: CreateTable,
schema: str | None = None,
create_statement: "str | CreateTable | None" = None,
) -> None:
self.table_name = table_name
self.create_table = create_table
self.schema = schema
self.create_statement = create_statement or create_table