File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 33All formats convert to/from this common IR, enabling lossless roundtripping
44between any supported format pair.
55"""
6+
67from __future__ import annotations
78
89from dataclasses import dataclass , field
1213
1314class ColumnType (Enum ):
1415 """Supported column data types mapped across ORMs."""
16+
1517 STRING = "string"
1618 INTEGER = "integer"
1719 FLOAT = "float"
@@ -31,6 +33,7 @@ class ColumnType(Enum):
3133@dataclass
3234class Column :
3335 """A single column/field in a schema."""
36+
3437 name : str
3538 type : ColumnType
3639 type_args : dict [str , Any ] = field (default_factory = dict )
@@ -47,6 +50,7 @@ class Column:
4750@dataclass
4851class Index :
4952 """A database index."""
53+
5054 name : str = ""
5155 columns : list [str ] = field (default_factory = list )
5256 unique : bool = False
@@ -55,6 +59,7 @@ class Index:
5559@dataclass
5660class Table :
5761 """A single table/model/collection in the schema."""
62+
5863 name : str
5964 columns : list [Column ] = field (default_factory = list )
6065 indexes : list [Index ] = field (default_factory = list )
@@ -66,12 +71,14 @@ class Table:
6671@dataclass
6772class EnumType :
6873 """A named enum type (database enum or ORM enum)."""
74+
6975 name : str
7076 values : list [str ] = field (default_factory = list )
7177
7278
7379@dataclass
7480class Schema :
7581 """Complete schema — the IR all formats translate to/from."""
82+
7683 tables : list [Table ] = field (default_factory = list )
7784 enums : list [EnumType ] = field (default_factory = list )
You can’t perform that action at this time.
0 commit comments