pyrom/app/migrations.py
2025-06-29 18:17:04 +03:00

31 lines
878 B
Python

from .db import db
# format: {integer: str|list<str>}
MIGRATIONS = {
}
def run_migrations():
print("Running migrations...")
ran = 0
db.execute("""
CREATE TABLE IF NOT EXISTS _migrations(
id INTEGER PRIMARY KEY
)
""")
completed = [row["id"] for row in db.query("SELECT id FROM _migrations")]
for migration_id in sorted(MIGRATIONS.keys()):
if migration_id not in completed:
print(f"Running migration #{migration_id}")
ran += 1
statements = MIGRATIONS[migration_id]
# support both strings and lists
if isinstance(statements, str):
statements = [statements]
for sql in statements:
db.execute(sql)
db.execute("INSERT INTO _migrations (id) VALUES (?)", migration_id)
print(f"Ran {ran} migrations.")