75 lines
2.1 KiB
Python
Executable File
75 lines
2.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Migration script to add documentation fields to peripherals table.
|
|
Adds: description, synthese, cli columns
|
|
"""
|
|
|
|
import sqlite3
|
|
import os
|
|
|
|
DB_PATH = "backend/data/peripherals.db"
|
|
|
|
def migrate():
|
|
"""Add new columns to peripherals table"""
|
|
|
|
if not os.path.exists(DB_PATH):
|
|
print(f"❌ Database not found: {DB_PATH}")
|
|
return False
|
|
|
|
conn = sqlite3.connect(DB_PATH)
|
|
cursor = conn.cursor()
|
|
|
|
try:
|
|
# Check existing columns
|
|
cursor.execute("PRAGMA table_info(peripherals)")
|
|
existing_columns = [row[1] for row in cursor.fetchall()]
|
|
print(f"✅ Found {len(existing_columns)} existing columns")
|
|
|
|
columns_to_add = []
|
|
|
|
# Check and add description
|
|
if 'description' not in existing_columns:
|
|
columns_to_add.append(('description', 'TEXT'))
|
|
|
|
# Check and add synthese
|
|
if 'synthese' not in existing_columns:
|
|
columns_to_add.append(('synthese', 'TEXT'))
|
|
|
|
# Check and add cli
|
|
if 'cli' not in existing_columns:
|
|
columns_to_add.append(('cli', 'TEXT'))
|
|
|
|
if not columns_to_add:
|
|
print("✅ All columns already exist. No migration needed.")
|
|
return True
|
|
|
|
# Add missing columns
|
|
for col_name, col_type in columns_to_add:
|
|
sql = f"ALTER TABLE peripherals ADD COLUMN {col_name} {col_type}"
|
|
print(f"🔧 Adding column: {col_name} {col_type}")
|
|
cursor.execute(sql)
|
|
|
|
conn.commit()
|
|
print(f"✅ Migration completed successfully! Added {len(columns_to_add)} columns.")
|
|
|
|
# Verify
|
|
cursor.execute("PRAGMA table_info(peripherals)")
|
|
new_columns = [row[1] for row in cursor.fetchall()]
|
|
print(f"✅ Total columns now: {len(new_columns)}")
|
|
|
|
return True
|
|
|
|
except sqlite3.Error as e:
|
|
print(f"❌ Migration failed: {e}")
|
|
conn.rollback()
|
|
return False
|
|
|
|
finally:
|
|
conn.close()
|
|
|
|
if __name__ == "__main__":
|
|
print("=" * 60)
|
|
print("MIGRATION: Add documentation fields to peripherals")
|
|
print("=" * 60)
|
|
migrate()
|