67 lines
1.9 KiB
Python
Executable File
67 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Apply migration 008: Add specifications and notes fields
|
|
"""
|
|
import sqlite3
|
|
from pathlib import Path
|
|
|
|
# Database path
|
|
DB_PATH = Path(__file__).parent / "data" / "peripherals.db"
|
|
MIGRATION_FILE = Path(__file__).parent / "migrations" / "008_add_specifications_notes.sql"
|
|
|
|
def apply_migration():
|
|
"""Apply migration 008"""
|
|
print(f"Applying migration 008 to {DB_PATH}")
|
|
|
|
if not DB_PATH.exists():
|
|
print(f"❌ Database not found: {DB_PATH}")
|
|
return False
|
|
|
|
if not MIGRATION_FILE.exists():
|
|
print(f"❌ Migration file not found: {MIGRATION_FILE}")
|
|
return False
|
|
|
|
# Read migration SQL
|
|
with open(MIGRATION_FILE, 'r', encoding='utf-8') as f:
|
|
migration_sql = f.read()
|
|
|
|
# Connect and execute
|
|
conn = sqlite3.connect(DB_PATH)
|
|
cursor = conn.cursor()
|
|
|
|
try:
|
|
# Split by semicolon and execute each statement
|
|
statements = [s.strip() for s in migration_sql.split(';') if s.strip() and not s.strip().startswith('--')]
|
|
|
|
for statement in statements:
|
|
if statement:
|
|
cursor.execute(statement)
|
|
|
|
conn.commit()
|
|
print("✅ Migration 008 applied successfully")
|
|
print(" - Added specifications column")
|
|
print(" - Added notes column")
|
|
|
|
# Verify columns exist
|
|
cursor.execute("PRAGMA table_info(peripherals)")
|
|
columns = cursor.fetchall()
|
|
column_names = [col[1] for col in columns]
|
|
|
|
if 'specifications' in column_names and 'notes' in column_names:
|
|
print("✅ Verification: Both columns exist in peripherals table")
|
|
else:
|
|
print("⚠️ Warning: Verification failed")
|
|
|
|
return True
|
|
|
|
except sqlite3.Error as e:
|
|
print(f"❌ Error applying migration: {e}")
|
|
conn.rollback()
|
|
return False
|
|
|
|
finally:
|
|
conn.close()
|
|
|
|
if __name__ == "__main__":
|
|
apply_migration()
|