45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
|
|
"""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()
|