# -*- coding: utf-8 -*-
"""
数据库初始化脚本
用于创建数据库表和初始化示例数据
"""

import os
import sys
from app import create_app
from models import db, Site, Tag, Admin

# 设置UTF-8编码输出
if sys.platform.startswith('win'):
    import io
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

def init_database():
    """初始化数据库"""
    app = create_app('development')

    with app.app_context():
        print("正在创建数据库表...")
        # 删除所有表（开发环境）
        db.drop_all()
        # 创建所有表
        db.create_all()
        print("✓ 数据库表创建成功")

        # 创建默认管理员
        print("\n正在创建默认管理员...")
        admin = Admin(
            username='admin',
            email='admin@example.com',
            is_active=True
        )
        admin.set_password('admin123')  # 默认密码
        db.session.add(admin)
        print("✓ 默认管理员创建成功")
        print("  用户名: admin")
        print("  密码: admin123")

        # 创建示例标签
        print("\n正在创建示例标签...")
        tags_data = [
            {'name': 'AI对话', 'slug': 'ai-chat', 'description': 'AI聊天和对话工具', 'icon': 'fas fa-comments', 'sort_order': 100},
            {'name': '图像生成', 'slug': 'image-gen', 'description': 'AI图像生成和编辑工具', 'icon': 'fas fa-image', 'sort_order': 90},
            {'name': '视频制作', 'slug': 'video', 'description': 'AI视频生成和编辑工具', 'icon': 'fas fa-video', 'sort_order': 80},
            {'name': '写作助手', 'slug': 'writing', 'description': 'AI写作和文本生成工具', 'icon': 'fas fa-pen', 'sort_order': 70},
            {'name': '代码助手', 'slug': 'coding', 'description': 'AI编程和代码生成工具', 'icon': 'fas fa-code', 'sort_order': 60},
            {'name': '音频处理', 'slug': 'audio', 'description': 'AI音频生成和处理工具', 'icon': 'fas fa-music', 'sort_order': 50},
        ]

        tags = []
        for tag_data in tags_data:
            tag = Tag(**tag_data)
            db.session.add(tag)
            tags.append(tag)
        db.session.commit()
        print(f"✓ 创建了 {len(tags)} 个示例标签")

        # 创建示例网站
        print("\n正在创建示例网站...")
        sites_data = [
            {
                'code': '10001001',
                'name': 'ChatGPT',
                'url': 'https://chat.openai.com',
                'slug': 'chatgpt',
                'short_desc': '最强大的AI对话助手，可以回答问题、写作、编程等',
                'description': 'ChatGPT是OpenAI开发的大型语言模型，能够进行自然对话、回答问题、协助写作、编程等多种任务。它基于GPT-4架构，拥有强大的理解和生成能力。',
                'features': '• 自然语言对话\n• 代码编写和调试\n• 文章写作和润色\n• 数据分析\n• 创意头脑风暴',
                'tags': [tags[0], tags[3], tags[4]],
                'sort_order': 100
            },
            {
                'code': '10001002',
                'name': 'Midjourney',
                'url': 'https://www.midjourney.com',
                'slug': 'midjourney',
                'short_desc': '顶级AI绘画工具，可以根据文字描述生成精美图片',
                'description': 'Midjourney是一款强大的AI图像生成工具，通过简单的文字描述就能创作出高质量的艺术作品。支持多种艺术风格，广泛应用于设计、插画等领域。',
                'features': '• 文字转图像\n• 多种艺术风格\n• 高清图片输出\n• 图片变体生成\n• 社区画廊',
                'tags': [tags[1]],
                'sort_order': 95
            },
            {
                'code': '10001003',
                'name': 'GitHub Copilot',
                'url': 'https://github.com/features/copilot',
                'slug': 'github-copilot',
                'short_desc': 'AI编程助手，帮助你更快地编写代码',
                'description': 'GitHub Copilot是由GitHub和OpenAI联合开发的AI编程助手，可以根据上下文自动建议代码补全，支持多种编程语言。',
                'features': '• 智能代码补全\n• 多语言支持\n• 函数生成\n• 代码注释生成\n• IDE集成',
                'tags': [tags[4]],
                'sort_order': 85
            },
        ]

        for site_data in sites_data:
            site = Site(**site_data)
            db.session.add(site)
        db.session.commit()
        print(f"✓ 创建了 {len(sites_data)} 个示例网站")

        print("\n" + "="*50)
        print("数据库初始化完成！")
        print("="*50)
        print("\n你可以使用以下命令启动应用:")
        print("  python app.py")
        print("\n然后访问:")
        print("  前台: http://localhost:5000")
        print("  后台: http://localhost:5000/admin")
        print("  登录: http://localhost:5000/admin/login")
        print("\n管理员账号:")
        print("  用户名: admin")
        print("  密码: admin123")
        print("\n⚠️  请在生产环境中修改默认密码！")

if __name__ == '__main__':
    init_database()
