74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
"""
|
|
Migration: Add one-off schedule fields to recurring_schedules table
|
|
|
|
Adds start_datetime and end_datetime columns for one-off recording schedules.
|
|
|
|
Run this script once to update existing databases:
|
|
python -m backend.migrate_add_oneoff_schedule_fields
|
|
"""
|
|
|
|
import sqlite3
|
|
import os
|
|
|
|
DB_PATH = "data/seismo_fleet.db"
|
|
|
|
|
|
def migrate():
|
|
"""Add one-off schedule columns to recurring_schedules table."""
|
|
if not os.path.exists(DB_PATH):
|
|
print(f"Database not found at {DB_PATH}")
|
|
return False
|
|
|
|
conn = sqlite3.connect(DB_PATH)
|
|
cursor = conn.cursor()
|
|
|
|
try:
|
|
cursor.execute("""
|
|
SELECT name FROM sqlite_master
|
|
WHERE type='table' AND name='recurring_schedules'
|
|
""")
|
|
if not cursor.fetchone():
|
|
print("recurring_schedules table does not exist yet. Will be created on app startup.")
|
|
conn.close()
|
|
return True
|
|
|
|
cursor.execute("PRAGMA table_info(recurring_schedules)")
|
|
columns = [row[1] for row in cursor.fetchall()]
|
|
|
|
added = False
|
|
|
|
if "start_datetime" not in columns:
|
|
print("Adding start_datetime column to recurring_schedules table...")
|
|
cursor.execute("""
|
|
ALTER TABLE recurring_schedules
|
|
ADD COLUMN start_datetime DATETIME NULL
|
|
""")
|
|
added = True
|
|
|
|
if "end_datetime" not in columns:
|
|
print("Adding end_datetime column to recurring_schedules table...")
|
|
cursor.execute("""
|
|
ALTER TABLE recurring_schedules
|
|
ADD COLUMN end_datetime DATETIME NULL
|
|
""")
|
|
added = True
|
|
|
|
if added:
|
|
conn.commit()
|
|
print("Successfully added one-off schedule columns.")
|
|
else:
|
|
print("One-off schedule columns already exist.")
|
|
|
|
conn.close()
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"Migration failed: {e}")
|
|
conn.close()
|
|
return False
|
|
|
|
|
|
if __name__ == "__main__":
|
|
success = migrate()
|
|
exit(0 if success else 1)
|