bmc_hub/run_migration.py

64 lines
2.5 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/env python3
"""
Simple migration runner - applies anydesk_sessions schema
"""
import psycopg2
import sys
sql_statements = [
"""
CREATE TABLE IF NOT EXISTS anydesk_sessions (
id SERIAL PRIMARY KEY,
anydesk_session_id VARCHAR(255) UNIQUE NOT NULL,
contact_id INTEGER REFERENCES contacts(id) ON DELETE SET NULL,
customer_id INTEGER REFERENCES customers(id) ON DELETE SET NULL,
sag_id INTEGER REFERENCES sag_sager(id) ON DELETE SET NULL,
session_link TEXT,
device_info JSONB DEFAULT '{}',
created_by_user_id INTEGER REFERENCES users(user_id) ON DELETE SET NULL,
started_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
ended_at TIMESTAMP WITH TIME ZONE,
duration_minutes INTEGER,
status VARCHAR(50) NOT NULL DEFAULT 'draft',
error_message TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
metadata JSONB DEFAULT '{}'
)
""",
"CREATE INDEX IF NOT EXISTS idx_anydesk_sessions_contact_id ON anydesk_sessions(contact_id)",
"CREATE INDEX IF NOT EXISTS idx_anydesk_sessions_customer_id ON anydesk_sessions(customer_id)",
"CREATE INDEX IF NOT EXISTS idx_anydesk_sessions_sag_id ON anydesk_sessions(sag_id)",
"CREATE INDEX IF NOT EXISTS idx_anydesk_sessions_created_by_user_id ON anydesk_sessions(created_by_user_id)",
"CREATE INDEX IF NOT EXISTS idx_anydesk_sessions_status ON anydesk_sessions(status)",
"CREATE INDEX IF NOT EXISTS idx_anydesk_sessions_started_at ON anydesk_sessions(started_at DESC)",
]
try:
# Connect to database
conn = psycopg2.connect("postgresql://bmc_hub:bmc_hub@localhost:5433/bmc_hub")
cursor = conn.cursor()
print("Applying AnyDesk migration...")
for i, statement in enumerate(sql_statements, 1):
preview = statement.replace('\n', ' ')[:80]
print(f" [{i}/{len(sql_statements)}] {preview}...")
cursor.execute(statement)
conn.commit()
print("✅ All statements executed successfully")
# Verify
cursor.execute("SELECT COUNT(*) as count FROM information_schema.tables WHERE table_name = 'anydesk_sessions'")
result = cursor.fetchone()
if result[0] > 0:
print("✅ anydesk_sessions table verified")
cursor.close()
conn.close()
except Exception as e:
print(f"❌ Error: {e}", file=sys.stderr)
sys.exit(1)