|
8 | 8 |
|
9 | 9 | from piccolo.engine import Engine, engine_finder |
10 | 10 | from piccolo.columns import Column, Selectable |
11 | | -from piccolo.columns.column_types import ForeignKey, PrimaryKey, Secret |
| 11 | +from piccolo.columns.column_types import ( |
| 12 | + ForeignKey, |
| 13 | + JSON, |
| 14 | + JSONB, |
| 15 | + PrimaryKey, |
| 16 | + Secret, |
| 17 | +) |
12 | 18 | from piccolo.columns.readable import Readable |
13 | 19 | from piccolo.columns.reference import ( |
14 | 20 | LazyTableReference, |
@@ -50,6 +56,7 @@ class TableMeta: |
50 | 56 | default_columns: t.List[Column] = field(default_factory=list) |
51 | 57 | non_default_columns: t.List[Column] = field(default_factory=list) |
52 | 58 | foreign_key_columns: t.List[ForeignKey] = field(default_factory=list) |
| 59 | + json_columns: t.List[t.Union[JSON, JSONB]] = field(default_factory=list) |
53 | 60 | secret_columns: t.List[Secret] = field(default_factory=list) |
54 | 61 | tags: t.List[str] = field(default_factory=list) |
55 | 62 | help_text: t.Optional[str] = None |
@@ -159,6 +166,7 @@ def __init_subclass__( |
159 | 166 | non_default_columns: t.List[Column] = [] |
160 | 167 | foreign_key_columns: t.List[ForeignKey] = [] |
161 | 168 | secret_columns: t.List[Secret] = [] |
| 169 | + json_columns: t.List[t.Union[JSON, JSONB]] = [] |
162 | 170 |
|
163 | 171 | cls.id = PrimaryKey() |
164 | 172 |
|
@@ -197,6 +205,9 @@ def __init_subclass__( |
197 | 205 | if isinstance(column, ForeignKey): |
198 | 206 | foreign_key_columns.append(column) |
199 | 207 |
|
| 208 | + if isinstance(column, (JSON, JSONB)): |
| 209 | + json_columns.append(column) |
| 210 | + |
200 | 211 | cls._meta = TableMeta( |
201 | 212 | tablename=tablename, |
202 | 213 | columns=columns, |
|
0 commit comments