50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
import sqlite3
|
|
|
|
from backend.database.migrations.runner import Migration
|
|
|
|
|
|
def upgrade(connection: sqlite3.Connection) -> None:
|
|
connection.execute(
|
|
"""
|
|
CREATE TABLE market_insight_snapshots (
|
|
kind TEXT NOT NULL CHECK (
|
|
kind IN ('auction', 'themes', 'popularity', 'dragon-list')
|
|
),
|
|
trade_date TEXT NOT NULL,
|
|
entity_key TEXT NOT NULL DEFAULT '',
|
|
observed_at TEXT NOT NULL,
|
|
state TEXT NOT NULL CHECK (state IN ('realtime', 'final', 'archive')),
|
|
source TEXT NOT NULL,
|
|
coverage REAL NOT NULL CHECK (coverage >= 0 AND coverage <= 1),
|
|
payload_json TEXT NOT NULL,
|
|
PRIMARY KEY (kind, trade_date, entity_key)
|
|
)
|
|
"""
|
|
)
|
|
connection.execute(
|
|
"""
|
|
CREATE TABLE seat_aliases (
|
|
seat_name TEXT PRIMARY KEY,
|
|
alias_name TEXT NOT NULL,
|
|
updated_at TEXT NOT NULL,
|
|
updated_by INTEGER REFERENCES users(id) ON DELETE SET NULL
|
|
)
|
|
"""
|
|
)
|
|
|
|
|
|
def downgrade(connection: sqlite3.Connection) -> None:
|
|
connection.execute("DROP TABLE seat_aliases")
|
|
connection.execute("DROP TABLE market_insight_snapshots")
|
|
|
|
|
|
MIGRATION = Migration(
|
|
version=5,
|
|
name="create_market_insight_archives",
|
|
signature="market:v3:auction-themes-popularity-dragon-list",
|
|
upgrade=upgrade,
|
|
downgrade=downgrade,
|
|
)
|