"""Migration: add companies.is_partner and companies.is_deleted columns.
Fixes audit findings M1 (dedicated partner flag) and L4 (missing is_deleted).
Usage:
cd /home/vincent/projects/command-sovereignty
source venv/bin/activate
python scripts/migrate_company_flags.py
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from app import create_app
from app.models import db
app = create_app()
with app.app_context():
inspector = db.inspect(db.engine)
columns = [col['name'] for col in inspector.get_columns('companies')]
with db.engine.connect() as conn:
if 'is_partner' not in columns:
print("Adding companies.is_partner column...")
conn.execute(db.text(
"ALTER TABLE companies ADD COLUMN is_partner BOOLEAN NOT NULL DEFAULT 0"
))
# Backfill: legacy heuristic was name contains 'partner'
conn.execute(db.text(
"UPDATE companies SET is_partner = 1 WHERE LOWER(name) LIKE '%partner%'"
))
print(" ✓ Added (backfilled from name heuristic)")
else:
print(" ✓ companies.is_partner already exists")
if 'is_deleted' not in columns:
print("Adding companies.is_deleted column...")
conn.execute(db.text(
"ALTER TABLE companies ADD COLUMN is_deleted BOOLEAN NOT NULL DEFAULT 0"
))
conn.execute(db.text(
"CREATE INDEX IF NOT EXISTS ix_companies_is_deleted ON companies(is_deleted)"
))
print(" ✓ Added")
else:
print(" ✓ companies.is_deleted already exists")
conn.commit()
print("\nMigration complete!")