Big-Link-Man/scripts/migrate_add_deployment_fiel...

100 lines
2.6 KiB
Python

"""
Migration script to add deployment tracking fields to generated_content table
Story 4.1: Deploy Content to Cloud Storage
"""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent))
from src.database.session import db_manager
from sqlalchemy import text
def migrate():
"""Add deployment tracking fields to generated_content table"""
session = db_manager.get_session()
try:
print("Starting migration: Add deployment tracking fields...")
print(" Adding deployed_url column...")
session.execute(text("""
ALTER TABLE generated_content
ADD COLUMN deployed_url TEXT NULL
"""))
print(" Adding deployed_at column...")
session.execute(text("""
ALTER TABLE generated_content
ADD COLUMN deployed_at TIMESTAMP NULL
"""))
print(" Creating index on deployed_at...")
session.execute(text("""
CREATE INDEX idx_generated_content_deployed
ON generated_content(deployed_at)
"""))
session.commit()
print("Migration completed successfully!")
print("\nNew fields added:")
print(" - deployed_url (TEXT, nullable)")
print(" - deployed_at (TIMESTAMP, nullable, indexed)")
except Exception as e:
session.rollback()
print(f"Migration failed: {e}")
raise
finally:
session.close()
def rollback():
"""Rollback migration (remove deployment fields)"""
session = db_manager.get_session()
try:
print("Rolling back migration: Remove deployment tracking fields...")
print(" Dropping index...")
session.execute(text("""
DROP INDEX IF EXISTS idx_generated_content_deployed
"""))
print(" Removing deployed_at column...")
session.execute(text("""
ALTER TABLE generated_content
DROP COLUMN deployed_at
"""))
print(" Removing deployed_url column...")
session.execute(text("""
ALTER TABLE generated_content
DROP COLUMN deployed_url
"""))
session.commit()
print("Rollback completed successfully!")
except Exception as e:
session.rollback()
print(f"Rollback failed: {e}")
raise
finally:
session.close()
if __name__ == "__main__":
if len(sys.argv) > 1 and sys.argv[1] == "rollback":
rollback()
else:
migrate()