81 lines
2.3 KiB
Python
81 lines
2.3 KiB
Python
"""
|
|
Migration script to add project_number field to projects table.
|
|
|
|
This adds a new column for TMI internal project numbering:
|
|
- Format: xxxx-YY (e.g., "2567-23")
|
|
- xxxx = incremental project number
|
|
- YY = year project was started
|
|
|
|
Combined with client_name and name (project/site name), this enables
|
|
smart searching across all project identifiers.
|
|
|
|
Run this script once to migrate an existing database.
|
|
"""
|
|
|
|
import sqlite3
|
|
import os
|
|
|
|
# Database path
|
|
DB_PATH = "./data/seismo_fleet.db"
|
|
|
|
|
|
def migrate_database():
|
|
"""Add project_number column to projects 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 projects table exists
|
|
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='projects'")
|
|
table_exists = cursor.fetchone()
|
|
|
|
if not table_exists:
|
|
print("Projects table does not exist yet - will be created when app runs")
|
|
conn.close()
|
|
return
|
|
|
|
# Check if project_number column already exists
|
|
cursor.execute("PRAGMA table_info(projects)")
|
|
columns = [col[1] for col in cursor.fetchall()]
|
|
|
|
if 'project_number' in columns:
|
|
print("Migration already applied - project_number column exists")
|
|
conn.close()
|
|
return
|
|
|
|
print("Adding project_number column to projects table...")
|
|
|
|
try:
|
|
cursor.execute("ALTER TABLE projects ADD COLUMN project_number TEXT")
|
|
print(" Added project_number column")
|
|
|
|
# Create index for faster searching
|
|
cursor.execute("CREATE INDEX IF NOT EXISTS ix_projects_project_number ON projects(project_number)")
|
|
print(" Created index on project_number")
|
|
|
|
# Also add index on client_name if it doesn't exist
|
|
cursor.execute("CREATE INDEX IF NOT EXISTS ix_projects_client_name ON projects(client_name)")
|
|
print(" Created index on client_name")
|
|
|
|
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()
|