from app import app
from extensions import db
from sqlalchemy import text

def migrate():
    with app.app_context():
        print("🔧 正在平滑迁移至 RBAC 体系...")
        try:
            # 1. 创建新表
            db.create_all()
            
            # 2. 修改 users 表结构
            # 增加 role_id
            db.session.execute(text('ALTER TABLE users ADD COLUMN IF NOT EXISTS role_id INTEGER REFERENCES roles(id)'))
            
            # 3. 尝试迁移旧数据：如果旧的 role 字段存在且值为 'admin'，则关联超级管理员角色
            # 我们先执行初始化脚本创建角色
            from init_rbac import init_rbac
            init_rbac()
            
            db.session.commit()
            print("✅ 数据库结构迁移成功")
            
        except Exception as e:
            print(f"❌ 迁移失败: {e}")
            db.session.rollback()

if __name__ == '__main__':
    migrate()