from pathlib import Path
p=Path('/opt/struktur/social-media-agent/publish_ready.py'); s=p.read_text()
bad=''' CREATE INDEX IF NOT EXISTS idx_package_image_variants_package ON package_image_variants(package_id, variant_order);
for column, definition in {"human_rating": "TEXT NOT NULL DEFAULT ''", "human_reason_verbatim": "TEXT NOT NULL DEFAULT ''", "human_reason_structured_json": "TEXT NOT NULL DEFAULT '{}'", "human_feedback_at": "TEXT NOT NULL DEFAULT ''", "human_feedback_by": "TEXT NOT NULL DEFAULT ''", "feedback_rules_json": "TEXT NOT NULL DEFAULT '[]'"}.items():
_ensure_column(con, "package_image_variants", column, definition)
CREATE TABLE IF NOT EXISTS media_catalog ('''
good=''' CREATE INDEX IF NOT EXISTS idx_package_image_variants_package ON package_image_variants(package_id, variant_order);
CREATE TABLE IF NOT EXISTS media_catalog ('''
assert s.count(bad)==1; s=s.replace(bad,good)
# Ensure variant columns after schema script closes, before its next media-column loop.
needle=''' """)
for column, definition in {
"space_type":'''
repl=''' """)
for column, definition in {"human_rating": "TEXT NOT NULL DEFAULT ''", "human_reason_verbatim": "TEXT NOT NULL DEFAULT ''", "human_reason_structured_json": "TEXT NOT NULL DEFAULT '{}'", "human_feedback_at": "TEXT NOT NULL DEFAULT ''", "human_feedback_by": "TEXT NOT NULL DEFAULT ''", "feedback_rules_json": "TEXT NOT NULL DEFAULT '[]'"}.items():
_ensure_column(con, "package_image_variants", column, definition)
for column, definition in {
"space_type":'''
assert s.count(needle)==1; s=s.replace(needle,repl)
dup=''' variants = con.execute("SELECT * FROM package_image_variants WHERE package_id=? ORDER BY CASE WHEN final_for_package=1 THEN 0 WHEN qa_status='passed' THEN 1 ELSE 2 END, variant_order", (item["package_id"],)).fetchall()
item["variants"] = [dict(v) for v in variants]
variants = con.execute("SELECT * FROM package_image_variants WHERE package_id=? ORDER BY CASE WHEN final_for_package=1 THEN 0 WHEN qa_status='passed' THEN 1 ELSE 2 END, variant_order", (item["package_id"],)).fetchall()
item["variants"] = [dict(v) for v in variants]'''
single=''' variants = con.execute("SELECT * FROM package_image_variants WHERE package_id=? ORDER BY CASE WHEN final_for_package=1 THEN 0 WHEN qa_status='passed' THEN 1 ELSE 2 END, variant_order", (item["package_id"],)).fetchall()
item["variants"] = [dict(v) for v in variants]'''
assert s.count(dup)==1; s=s.replace(dup,single)
p.write_text(s); print('fixed partial integration')