Skip to content

Commit a152f53

Browse files
committed
added foundation for SetColumnType
1 parent f623911 commit a152f53

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

piccolo/query/methods/alter.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,20 @@ def querystring(self) -> QueryString:
9191
return QueryString(f"ALTER COLUMN {self.column_name} DROP DEFAULT")
9292

9393

94+
@dataclass
95+
class SetColumnType(AlterColumnStatement):
96+
__slots__ = ("column_name", "column")
97+
98+
column_name: str
99+
column: Column
100+
101+
@property
102+
def querystring(self) -> QueryString:
103+
return QueryString(
104+
f"ALTER COLUMN {self.column_name} TYPE {self.column.column_type}"
105+
)
106+
107+
94108
@dataclass
95109
class SetDefault(AlterColumnStatement):
96110
__slots__ = ("column", "value")
@@ -257,6 +271,7 @@ class Alter(Query):
257271
"_drop",
258272
"_rename_columns",
259273
"_rename_table",
274+
"_set_column_type",
260275
"_set_default",
261276
"_set_digits",
262277
"_set_length",
@@ -274,6 +289,7 @@ def __init__(self, table: t.Type[Table]):
274289
self._drop: t.List[DropColumn] = []
275290
self._rename_columns: t.List[RenameColumn] = []
276291
self._rename_table: t.List[RenameTable] = []
292+
self._set_column_type: t.List[SetColumnType] = []
277293
self._set_default: t.List[SetDefault] = []
278294
self._set_digits: t.List[SetDigits] = []
279295
self._set_length: t.List[SetLength] = []
@@ -333,6 +349,15 @@ def rename_column(
333349
self._rename_columns.append(RenameColumn(column, new_name))
334350
return self
335351

352+
def set_column_type(self, column_name: str, column: Column) -> Alter:
353+
"""
354+
Change the type of a column.
355+
"""
356+
self._set_column_type.append(
357+
SetColumnType(column_name=column_name, column=column)
358+
)
359+
return self
360+
336361
def set_default(self, column: Column, value: t.Any) -> Alter:
337362
"""
338363
Set the default for a column.
@@ -472,6 +497,7 @@ def querystrings(self) -> t.Sequence[QueryString]:
472497
self._rename_table,
473498
self._drop,
474499
self._drop_default,
500+
self._set_column_type,
475501
self._set_unique,
476502
self._set_null,
477503
self._set_length,

0 commit comments

Comments
 (0)