Skip to content

Commit cf243d2

Browse files
committed
added tests for Interval columns in migrations
1 parent a26088d commit cf243d2

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

piccolo/columns/base.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from piccolo.columns.combination import Where
2929
from piccolo.columns.choices import Choice
3030
from piccolo.columns.defaults.base import Default
31+
from piccolo.columns.defaults.interval import IntervalCustom
3132
from piccolo.columns.reference import LazyTableReference
3233
from piccolo.columns.indexes import IndexMethod
3334
from piccolo.querystring import QueryString
@@ -545,6 +546,9 @@ def get_sql_value(self, value: t.Any) -> t.Any:
545546
output = f"'{value.isoformat()}'"
546547
elif isinstance(value, datetime.time):
547548
output = f"'{value.isoformat()}'"
549+
elif isinstance(value, datetime.timedelta):
550+
interval = IntervalCustom.from_timedelta(value)
551+
output = getattr(interval, self._meta.engine_type)
548552
elif isinstance(value, bytes):
549553
output = f"'{value.hex()}'"
550554
elif isinstance(value, uuid.UUID):

tests/apps/migrations/auto/integration/test_migrations.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
BigInt,
1515
Date,
1616
Integer,
17+
Interval,
1718
SmallInt,
1819
Text,
1920
Time,
@@ -59,6 +60,10 @@ def date_default():
5960
return datetime.datetime.now().date()
6061

6162

63+
def timedelta_default():
64+
return datetime.timedelta(days=1)
65+
66+
6267
@postgres_only
6368
class TestMigrations(TestCase):
6469
def tearDown(self):
@@ -267,3 +272,19 @@ def test_date_column(self):
267272
]
268273
]
269274
)
275+
276+
def test_interval_column(self):
277+
self._test_migrations(
278+
table_classes=[
279+
self.table(column)
280+
for column in [
281+
Interval(),
282+
Interval(default=datetime.timedelta(days=1)),
283+
Interval(default=timedelta_default),
284+
Interval(null=True, default=None),
285+
Interval(null=False),
286+
Interval(index=True),
287+
Interval(index=False),
288+
]
289+
]
290+
)

0 commit comments

Comments
 (0)