#!/usr/bin/env python3
"""
初始化数据库，创建默认管理员账号和角色
"""

from sqlalchemy.orm import Session
from app.models.database import engine, Base, SessionLocal
from app.models.models import User
from app.services.user import UserService


def init_db():
    """初始化数据库"""
    # 创建所有表
    print("创建数据库表...")
    Base.metadata.create_all(bind=engine)
    print("数据库表创建完成")
    
    # 初始化默认角色
    print("\n初始化默认角色...")
    db = SessionLocal()
    
    try:
        # 初始化默认角色
        UserService.init_default_roles(db)
        print("✅ 默认角色初始化完成")
        
        # 获取默认角色
        admin_role = UserService.get_role_by_name(db, "admin")
        user_role = UserService.get_role_by_name(db, "user")
        
        if not admin_role or not user_role:
            print("❌ 默认角色创建失败")
            return
        
        # 创建默认管理员账号
        print("\n创建默认管理员账号...")
        # 检查是否已存在管理员账号
        admin_user = db.query(User).filter(User.username == "admin").first()
        
        if not admin_user:
            # 创建默认管理员账号
            admin_user = User(
                id="user-admin",
                username="admin",
                email="admin@example.com",
                password_hash=UserService.get_password_hash("admin123"),
                role_id=admin_role.id,
                status="active"
            )
            db.add(admin_user)
            db.commit()
            db.refresh(admin_user)
            print("✅ 默认管理员账号创建成功")
            print(f"用户名: admin")
            print(f"密码: admin123")
        else:
            print("⚠️  管理员账号已存在")
            
    finally:
        db.close()


if __name__ == "__main__":
    init_db()
