Demo: use the script itself as the migrations module
This commit is contained in:
+3
-6
@@ -10,9 +10,9 @@ lives in this file.
|
|||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
|
import sys
|
||||||
from datetime import UTC, datetime, timedelta
|
from datetime import UTC, datetime, timedelta
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from types import ModuleType
|
|
||||||
|
|
||||||
import msgspec
|
import msgspec
|
||||||
|
|
||||||
@@ -44,13 +44,10 @@ def migrate_v1(d: dict) -> None:
|
|||||||
d["settings"] = {"theme": "dark"}
|
d["settings"] = {"theme": "dark"}
|
||||||
|
|
||||||
|
|
||||||
migrations = ModuleType("demo_migrations")
|
|
||||||
migrations.migrate_v1 = migrate_v1
|
|
||||||
|
|
||||||
# Phase 1 instance: default logging, original schema.
|
# Phase 1 instance: default logging, original schema.
|
||||||
kanta_v0 = Kanta(DB, DataV1())
|
kanta_v0 = Kanta(DB, DataV1())
|
||||||
# Phase 2 instance: migrations and a custom log header.
|
# Phase 2 instance: migrations (scanned from this script) and a custom header.
|
||||||
kanta_v1 = Kanta(DB, Data(), migrations=migrations)
|
kanta_v1 = Kanta(DB, Data(), migrations=sys.modules[__name__])
|
||||||
|
|
||||||
_now = datetime(2026, 8, 6, tzinfo=UTC)
|
_now = datetime(2026, 8, 6, tzinfo=UTC)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user