Files
Anton_wireframe/migrations/add_industry_to_projects.py
T

68 lines
2.0 KiB
Python

"""
Migration: Add industry column to projects table
Date: 2025-10-23
"""
import os
import sys
from pathlib import Path
# Add parent directory to path to import app modules
sys.path.insert(0, str(Path(__file__).parent.parent))
from sqlalchemy import create_engine, text
from app.db.db import DATABASE_URL, engine
def upgrade():
"""Add industry column to projects table"""
print("Running migration: Add industry column to projects table")
with engine.connect() as conn:
# Check if column already exists
result = conn.execute(text("PRAGMA table_info(projects)"))
columns = [row[1] for row in result]
if 'industry' in columns:
print("Column 'industry' already exists in projects table. Skipping migration.")
return
# Add the industry column
conn.execute(text("ALTER TABLE projects ADD COLUMN industry VARCHAR"))
conn.commit()
print("Successfully added 'industry' column to projects table")
def downgrade():
"""Remove industry column from projects table"""
print("Running downgrade: Remove industry column from projects table")
# Note: SQLite doesn't support DROP COLUMN directly
# This is a simplified version - in production you'd need to recreate the table
print("Warning: SQLite doesn't support DROP COLUMN.")
print("To remove the column, you would need to:")
print("1. Create a new table without the industry column")
print("2. Copy data from old table to new table")
print("3. Drop old table and rename new table")
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Run database migration")
parser.add_argument(
"direction",
choices=["upgrade", "downgrade"],
default="upgrade",
nargs="?",
help="Migration direction (default: upgrade)"
)
args = parser.parse_args()
if args.direction == "upgrade":
upgrade()
else:
downgrade()