"""Connection and table-maintenance helpers for the economics import.""" import sqlite3 from pathlib import Path def connect(db_path: Path) -> sqlite3.Connection: """Open systems.db with foreign-key enforcement on.""" conn = sqlite3.connect(str(db_path)) conn.execute("PRAGMA foreign_keys=ON") return conn def clear_economics_tables(conn: sqlite3.Connection) -> None: """Clear economics tables in FK-safe order (children before parents). corp_presence is cleared here; the corporations table is append-only (never cleared). Runs inside the caller's transaction, so a failure later in the import rolls these DELETEs back too. """ conn.execute("DELETE FROM corp_presence") conn.execute("DELETE FROM brand_inputs") conn.execute("DELETE FROM brand_products") conn.execute("DELETE FROM system_fiscal") conn.execute("DELETE FROM corp_financial_state") conn.execute("DELETE FROM corp_lifecycle_events") conn.execute("DELETE FROM chain_inputs") conn.execute("DELETE FROM production_chains") # specialization_vocabulary FK-references commodities — clear it # before commodities so the FK-on delete does not fail (D-237). conn.execute("DELETE FROM specialization_vocabulary") conn.execute("DELETE FROM commodities") conn.execute("DELETE FROM gate_links")