LinkDesk/backend/migrate_soft_deletion_compl...

90 lines
2.9 KiB
Python

#!/usr/bin/env python3
"""
Complete migration script for soft deletion functionality.
Runs all individual migration scripts in the correct order and verifies the results.
"""
import subprocess
import sys
from pathlib import Path
def run_migration_script(script_name):
"""Run a migration script and return success status."""
script_path = Path(__file__).parent / script_name
if not script_path.exists():
print(f"ERROR: Migration script {script_name} not found")
return False
try:
print(f"\n{'='*50}")
print(f"Running {script_name}")
print(f"{'='*50}")
result = subprocess.run([sys.executable, str(script_path)],
capture_output=True, text=True, cwd=Path(__file__).parent)
print(result.stdout)
if result.stderr:
print("STDERR:", result.stderr)
if result.returncode == 0:
print(f"SUCCESS: {script_name} completed successfully")
return True
else:
print(f"ERROR: {script_name} failed with exit code {result.returncode}")
return False
except Exception as e:
print(f"ERROR: Error running {script_name}: {e}")
return False
def main():
"""Run all soft deletion migration scripts."""
print("=== Complete Soft Deletion Migration ===")
print("This will add soft deletion columns to all relevant tables")
# Migration scripts in order
migration_scripts = [
"migrate_soft_deletion_shots.py",
"migrate_soft_deletion_assets.py",
"migrate_soft_deletion_tasks.py",
"migrate_soft_deletion_related_tables.py"
]
all_successful = True
for script in migration_scripts:
success = run_migration_script(script)
if not success:
all_successful = False
print(f"\nERROR: Migration failed at {script}")
break
if all_successful:
print(f"\n{'='*50}")
print("SUCCESS: ALL MIGRATIONS COMPLETED SUCCESSFULLY!")
print("SUCCESS: Soft deletion columns added to all tables:")
print(" - shots (deleted_at, deleted_by)")
print(" - assets (deleted_at, deleted_by)")
print(" - tasks (deleted_at, deleted_by)")
print(" - submissions (deleted_at, deleted_by)")
print(" - task_attachments (deleted_at, deleted_by)")
print(" - production_notes (deleted_at, deleted_by)")
print(" - reviews (deleted_at, deleted_by)")
print("SUCCESS: Partial indexes created for efficient querying")
print(f"{'='*50}")
return True
else:
print(f"\n{'='*50}")
print("ERROR: MIGRATION FAILED!")
print("Please check the error messages above and fix any issues.")
print(f"{'='*50}")
return False
if __name__ == "__main__":
success = main()
sys.exit(0 if success else 1)