resumebuilder / migrate_admin_columns.py
sakthi07's picture
pushing to hugging face
ab028ac
#!/usr/bin/env python3
"""
Migration script to add admin columns to users table
Run this script to update the database schema for admin functionality
"""
import os
import sys
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
# Add current directory to Python path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from models import db, User
import uuid
from sqlalchemy import text
def migrate_database():
"""Add is_admin and role columns to users table"""
app = Flask(__name__)
app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY', 'dev-secret-key-change-in-production')
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('SQLALCHEMY_DATABASE_URI')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
with app.app_context():
# Check if columns already exist
inspector = db.inspect(db.engine)
columns = [column['name'] for column in inspector.get_columns('users')]
if 'is_admin' not in columns:
print("Adding is_admin column...")
db.session.execute(text('ALTER TABLE users ADD COLUMN is_admin BOOLEAN DEFAULT FALSE'))
if 'role' not in columns:
print("Adding role column...")
db.session.execute(text('ALTER TABLE users ADD COLUMN role VARCHAR(50) DEFAULT \'User\''))
db.session.commit()
print("Migration completed successfully!")
# Update admin user if exists
admin_email = os.environ.get('ADMIN_EMAIL')
if admin_email:
admin_user = User.query.filter_by(email=admin_email).first()
if admin_user:
admin_user.is_admin = True
admin_user.role = 'Admin'
db.session.commit()
print(f"Updated {admin_email} as admin user")
else:
print(f"Admin user {admin_email} not found in database")
if __name__ == '__main__':
migrate_database()