Source code for comdab.models.schema

from typing import Any

from pydantic import Field

from comdab.models.base import ComdabModel
from comdab.models.custom_type import ComdabCustomType
from comdab.models.function import ComdabFunction
from comdab.models.sequence import ComdabSequence
from comdab.models.table import ComdabTable
from comdab.models.view import ComdabView
from comdab.path import ComdabPath, dict_of_paths


[docs] class ComdabSchema(ComdabModel, frozen=True): """A database schema, the top-level comdab model. Equivalent to a :class:`sqlalchemy.sql.schema.MetaData` object. """ tables: dict[str, ComdabTable] views: dict[str, ComdabView] sequences: dict[str, ComdabSequence] functions: dict[str, ComdabFunction] custom_types: dict[str, ComdabCustomType] extra: dict[str, Any] = Field(default_factory=dict) class Path(ComdabPath): tables = dict_of_paths(ComdabTable.Path) views = dict_of_paths(ComdabView.Path) sequences = dict_of_paths(ComdabSequence.Path) functions = dict_of_paths(ComdabFunction.Path) custom_types = dict_of_paths(ComdabCustomType.Path) extra = dict_of_paths(ComdabPath)
ROOT = ComdabSchema.Path([], _ok=True)