81 lines
2.3 KiB
Python
81 lines
2.3 KiB
Python
"""
|
|
Migration script to add user_preferences table.
|
|
|
|
This creates a new table for storing persistent user preferences:
|
|
- Display settings (timezone, theme, date format)
|
|
- Auto-refresh configuration
|
|
- Calibration defaults
|
|
- Status threshold customization
|
|
|
|
Run this script once to migrate an existing database.
|
|
"""
|
|
|
|
import sqlite3
|
|
import os
|
|
|
|
# Database path
|
|
DB_PATH = "./data/seismo_fleet.db"
|
|
|
|
def migrate_database():
|
|
"""Create user_preferences table"""
|
|
|
|
if not os.path.exists(DB_PATH):
|
|
print(f"Database not found at {DB_PATH}")
|
|
print("The database will be created automatically when you run the application.")
|
|
return
|
|
|
|
print(f"Migrating database: {DB_PATH}")
|
|
|
|
conn = sqlite3.connect(DB_PATH)
|
|
cursor = conn.cursor()
|
|
|
|
# Check if user_preferences table already exists
|
|
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='user_preferences'")
|
|
table_exists = cursor.fetchone()
|
|
|
|
if table_exists:
|
|
print("Migration already applied - user_preferences table exists")
|
|
conn.close()
|
|
return
|
|
|
|
print("Creating user_preferences table...")
|
|
|
|
try:
|
|
cursor.execute("""
|
|
CREATE TABLE user_preferences (
|
|
id INTEGER PRIMARY KEY DEFAULT 1,
|
|
timezone TEXT DEFAULT 'America/New_York',
|
|
theme TEXT DEFAULT 'auto',
|
|
auto_refresh_interval INTEGER DEFAULT 10,
|
|
date_format TEXT DEFAULT 'MM/DD/YYYY',
|
|
table_rows_per_page INTEGER DEFAULT 25,
|
|
calibration_interval_days INTEGER DEFAULT 365,
|
|
calibration_warning_days INTEGER DEFAULT 30,
|
|
status_ok_threshold_hours INTEGER DEFAULT 12,
|
|
status_pending_threshold_hours INTEGER DEFAULT 24,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
)
|
|
""")
|
|
print(" ✓ Created user_preferences table")
|
|
|
|
# Insert default preferences
|
|
cursor.execute("""
|
|
INSERT INTO user_preferences (id) VALUES (1)
|
|
""")
|
|
print(" ✓ Inserted default preferences")
|
|
|
|
conn.commit()
|
|
print("\nMigration completed successfully!")
|
|
|
|
except sqlite3.Error as e:
|
|
print(f"\nError during migration: {e}")
|
|
conn.rollback()
|
|
raise
|
|
|
|
finally:
|
|
conn.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
migrate_database()
|