43 lines
996 B
Python
43 lines
996 B
Python
from __future__ import annotations
|
|
|
|
import sqlite3
|
|
|
|
from backend.database.migrations.runner import Migration, MigrationError
|
|
|
|
|
|
REQUIRED_TABLES = frozenset(
|
|
{
|
|
"users",
|
|
"user_sessions",
|
|
"dashboard_snapshots",
|
|
"watchlist",
|
|
"review_notes",
|
|
"stock_master",
|
|
"daily_bars",
|
|
"screener_runs",
|
|
"mentor_messages",
|
|
"trade_entries",
|
|
"heaven_readings",
|
|
}
|
|
)
|
|
|
|
|
|
def adopt_legacy_schema(connection: sqlite3.Connection) -> None:
|
|
tables = {
|
|
str(row["name"])
|
|
for row in connection.execute(
|
|
"SELECT name FROM sqlite_master WHERE type = 'table'"
|
|
)
|
|
}
|
|
missing = sorted(REQUIRED_TABLES - tables)
|
|
if missing:
|
|
raise MigrationError(f"Legacy schema is incomplete: {', '.join(missing)}")
|
|
|
|
|
|
MIGRATION = Migration(
|
|
version="0001",
|
|
name="adopt_legacy_schema",
|
|
action=adopt_legacy_schema,
|
|
signature="required-tables:v1:" + ",".join(sorted(REQUIRED_TABLES)),
|
|
)
|