rebuild(stage-11): deliver deterministic heaven workflows
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import sqlite3
|
||||
|
||||
from backend.database.migrations.runner import Migration
|
||||
|
||||
|
||||
def upgrade(connection: sqlite3.Connection) -> None:
|
||||
connection.execute(
|
||||
"""
|
||||
CREATE TABLE heaven_readings (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
mode TEXT NOT NULL CHECK (mode IN ('trend', 'fortune', 'heart')),
|
||||
reading_date TEXT NOT NULL,
|
||||
subject_key TEXT NOT NULL DEFAULT '',
|
||||
result_json TEXT NOT NULL,
|
||||
interpretation TEXT NOT NULL DEFAULT '',
|
||||
interpretation_status TEXT NOT NULL DEFAULT 'pending' CHECK (
|
||||
interpretation_status IN ('pending', 'complete', 'stopped', 'error')
|
||||
),
|
||||
request_id TEXT REFERENCES llm_requests(id) ON DELETE SET NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
)
|
||||
"""
|
||||
)
|
||||
connection.execute(
|
||||
"""
|
||||
CREATE INDEX heaven_readings_scope_idx
|
||||
ON heaven_readings(user_id, mode, reading_date, id)
|
||||
"""
|
||||
)
|
||||
connection.execute(
|
||||
"""
|
||||
CREATE UNIQUE INDEX heaven_fortune_daily_idx
|
||||
ON heaven_readings(user_id, reading_date)
|
||||
WHERE mode = 'fortune'
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
def downgrade(connection: sqlite3.Connection) -> None:
|
||||
connection.execute("DROP TABLE heaven_readings")
|
||||
|
||||
|
||||
MIGRATION = Migration(
|
||||
version=9,
|
||||
name="create_heaven_readings",
|
||||
signature="heaven:v2:account-readings-unique-daily-fortune",
|
||||
upgrade=upgrade,
|
||||
downgrade=downgrade,
|
||||
)
|
||||
Reference in New Issue
Block a user