Source code for sqldbagent.core.models.catalog

"""Canonical normalized catalog models."""

from pydantic import BaseModel, Field


[docs] class ColumnModel(BaseModel): """Normalized column metadata. Attributes: name: Column name. data_type: Normalized logical or physical data type. nullable: Whether the column accepts null values. default: Optional default expression. description: Optional normalized description. summary: Generated short summary for humans and downstream prompts. """ name: str data_type: str nullable: bool = True default: str | None = None description: str | None = None summary: str | None = None
[docs] class CheckConstraintModel(BaseModel): """Normalized check constraint metadata. Attributes: name: Constraint name when available. expression: Check expression SQL when available. summary: Generated short summary. """ name: str | None = None expression: str | None = None summary: str | None = None
[docs] class IndexModel(BaseModel): """Normalized index metadata. Attributes: name: Index name. columns: Indexed column names. unique: Whether the index is unique. summary: Generated short summary. """ name: str | None = None columns: list[str] = Field(default_factory=list) unique: bool = False summary: str | None = None
[docs] class ForeignKeyModel(BaseModel): """Normalized foreign key metadata. Attributes: name: Constraint name when available. columns: Local constrained columns. referred_schema: Referenced schema name when available. referred_table: Referenced table name. referred_columns: Referenced column names. summary: Generated short summary. """ name: str | None = None columns: list[str] = Field(default_factory=list) referred_schema: str | None = None referred_table: str referred_columns: list[str] = Field(default_factory=list) summary: str | None = None
[docs] class UniqueConstraintModel(BaseModel): """Normalized unique constraint metadata. Attributes: name: Constraint name when available. columns: Columns covered by the unique constraint. summary: Generated short summary. """ name: str | None = None columns: list[str] = Field(default_factory=list) summary: str | None = None
[docs] class RelationshipEdgeModel(BaseModel): """Normalized relationship edge derived from a foreign key. Attributes: source_schema: Schema of the referencing table when available. source_table: Referencing table. source_columns: Referencing columns. target_schema: Schema of the referenced table when available. target_table: Referenced table. target_columns: Referenced columns. constraint_name: Foreign key constraint name. summary: Generated short summary. """ source_schema: str | None = None source_table: str source_columns: list[str] = Field(default_factory=list) target_schema: str | None = None target_table: str target_columns: list[str] = Field(default_factory=list) constraint_name: str | None = None summary: str | None = None
[docs] class TableModel(BaseModel): """Normalized table metadata. Attributes: database: Optional database name containing the table. schema_name: Optional schema name containing the table. name: Table name. columns: Normalized column metadata. primary_key: Ordered primary key column names. indexes: Normalized index metadata. foreign_keys: Normalized foreign key metadata. unique_constraints: Normalized unique constraint metadata. check_constraints: Normalized check constraint metadata. description: Optional normalized description. summary: Generated short summary. """ database: str | None = None schema_name: str | None = None name: str columns: list[ColumnModel] = Field(default_factory=list) primary_key: list[str] = Field(default_factory=list) indexes: list[IndexModel] = Field(default_factory=list) foreign_keys: list[ForeignKeyModel] = Field(default_factory=list) unique_constraints: list[UniqueConstraintModel] = Field(default_factory=list) check_constraints: list[CheckConstraintModel] = Field(default_factory=list) description: str | None = None summary: str | None = None
[docs] class ViewModel(BaseModel): """Normalized view metadata. Attributes: database: Optional database containing the view. schema_name: Optional schema containing the view. name: View name. columns: Reflected view columns. definition: View definition SQL when available. summary: Generated short summary. """ database: str | None = None schema_name: str | None = None name: str columns: list[ColumnModel] = Field(default_factory=list) definition: str | None = None summary: str | None = None
[docs] class ServerModel(BaseModel): """Normalized server metadata. Attributes: dialect: Dialect or driver name used by the datasource. database: Current database name when available. schemas: Visible schema names. summary: Generated short summary. """ dialect: str database: str | None = None schemas: list[str] = Field(default_factory=list) summary: str | None = None
[docs] class SchemaModel(BaseModel): """Normalized schema metadata. Attributes: database: Optional database name containing the schema. name: Schema name. tables: Normalized tables within the schema. views: Normalized views within the schema. summary: Generated short summary. """ database: str | None = None name: str tables: list[TableModel] = Field(default_factory=list) views: list[ViewModel] = Field(default_factory=list) summary: str | None = None
[docs] class DatabaseModel(BaseModel): """Normalized database metadata. Attributes: name: Database name. schemas: Normalized schema metadata in the database. summary: Generated short summary. """ name: str schemas: list[SchemaModel] = Field(default_factory=list) summary: str | None = None