"""Migration 2026-05-25: projekt-Tabelle um Werkstatt-Felder. Mit Herb am 2026-05-25 festgelegt: - modellier_software_slug: welche Hauptsoftware wurde benutzt (Single-Select). FK auf software_seite.slug (kein DB-Constraint, weil software_seite-Karten per Admin geloescht werden koennen — alter Slug bleibt dann als Klartext). - drucker_id_used: welcher Drucker wurde benutzt (Single-Select). Nicht 'drucker_id', weil das Schema-historisch fuer Slots gedacht war; 'used' macht's eindeutig. - makerworld_url: optionale Veroeffentlichung auf MakerWorld (externer Link). Idempotent. """ import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from database import get_db NEUE_SPALTEN = [ ("modellier_software_slug", "TEXT"), ("drucker_id_used", "INTEGER"), ("makerworld_url", "TEXT"), ] def main(): conn = get_db() spalten = {row["name"] for row in conn.execute("PRAGMA table_info(projekt)")} angelegt = [] for name, typ in NEUE_SPALTEN: if name not in spalten: conn.execute(f"ALTER TABLE projekt ADD COLUMN {name} {typ}") angelegt.append(name) conn.commit() conn.close() if angelegt: print(f"[migration] projekt: Spalten ergaenzt: {', '.join(angelegt)}.") else: print("[migration] projekt: alle Werkstatt-Spalten existieren bereits.") if __name__ == "__main__": main()