#!/usr/bin/env python3
"""
Migration script to add the department column to the tasks table.

Usage:
    python migrate_task_department.py
"""

import sqlite3
import sys
from pathlib import Path


def get_database_path():
    """Get the database path, trying multiple possible locations."""
    possible_paths = [
        "vfx_project_management.db",  # Primary database
        "database.db",
        "../vfx_project_management.db"
    ]

    for path in possible_paths:
        if Path(path).exists():
            return path

    return "vfx_project_management.db"


def check_column_exists(cursor, table_name, column_name):
    """Check if a column exists in a table."""
    cursor.execute(f"PRAGMA table_info({table_name})")
    columns = [column[1] for column in cursor.fetchall()]
    return column_name in columns


def migrate_database():
    """Add department column to the tasks table."""
    db_path = get_database_path()
    print(f"Using database: {db_path}")

    conn = None
    try:
        conn = sqlite3.connect(db_path)
        cursor = conn.cursor()

        cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='tasks'")
        if not cursor.fetchone():
            print("Tasks table not found. Creating new database schema...")
            conn.close()
            return

        if check_column_exists(cursor, "tasks", "department"):
            print("Column department already exists, skipping...")
        else:
            print("Adding column: department")
            cursor.execute("ALTER TABLE tasks ADD COLUMN department VARCHAR")

        conn.commit()

        cursor.execute("SELECT COUNT(*) FROM tasks")
        task_count = cursor.fetchone()[0]
        print(f"Migration completed successfully! {task_count} tasks unaffected (column defaults to NULL).")

    except sqlite3.Error as e:
        print(f"Database error: {e}")
        if conn:
            conn.rollback()
        sys.exit(1)
    except Exception as e:
        print(f"Unexpected error: {e}")
        if conn:
            conn.rollback()
        sys.exit(1)
    finally:
        if conn:
            conn.close()


if __name__ == "__main__":
    print("VFX Project Management - Task Department Migration")
    print("=" * 60)

    migrate_database()

    print("\nMigration completed successfully!")
