"""
数据库初始化 API
"""
from flask import jsonify
from lib.db import execute_update
from . import init_bp


@init_bp.route('/init-tables', methods=['POST'])
def init_tables():
    """初始化数据库表"""
    try:
        # 创建配置表
        create_config_table = """
            CREATE TABLE IF NOT EXISTS t_daily_report_config (
                id BIGINT NOT NULL COMMENT '配置 ID',
                config_name VARCHAR(100) NOT NULL COMMENT '配置名称',
                split_type VARCHAR(20) NOT NULL COMMENT '拆分方式',
                split_value VARCHAR(100) NOT NULL COMMENT '拆分值',
                split_name VARCHAR(200) NULL COMMENT '拆分显示名称',
                selected_fields VARCHAR(3000) NOT NULL COMMENT '选择的字段列表',
                sum_fields VARCHAR(3000) NULL COMMENT '求和字段列表',
                is_active TINYINT NULL COMMENT '是否启用',
                sort_order INT NULL COMMENT '排序顺序',
                create_time DATETIME NULL COMMENT '创建时间',
                update_time DATETIME NULL COMMENT '更新时间'
            )
            UNIQUE KEY(id)
            DISTRIBUTED BY HASH(id) BUCKETS 1
            PROPERTIES("replication_num" = "1")
        """
        execute_update(create_config_table)
        
        # 创建历史表
        create_history_table = """
            CREATE TABLE IF NOT EXISTS t_daily_report_history (
                id BIGINT NOT NULL COMMENT '历史 ID',
                report_date VARCHAR(20) NULL COMMENT '报表日期',
                start_time VARCHAR(50) NULL COMMENT '开始时间',
                end_time VARCHAR(50) NULL COMMENT '结束时间',
                split_type VARCHAR(20) NULL COMMENT '拆分方式',
                split_value VARCHAR(100) NULL COMMENT '拆分值',
                split_name VARCHAR(200) NULL COMMENT '拆分显示名称',
                config_id BIGINT NULL COMMENT '配置 ID',
                config_name VARCHAR(200) NULL COMMENT '配置名称',
                total_orders INT NULL COMMENT '订单总数',
                total_amount DECIMAL(10,2) NULL COMMENT '总金额',
                sum_results VARCHAR(2000) NULL COMMENT '求和结果',
                file_path VARCHAR(500) NULL COMMENT '文件路径',
                status TINYINT NULL COMMENT '状态',
                create_time DATETIME NULL COMMENT '创建时间'
            )
            UNIQUE KEY(id)
            DISTRIBUTED BY HASH(id) BUCKETS 1
            PROPERTIES("replication_num" = "1")
        """
        execute_update(create_history_table)
        
        # 为已存在的表添加 config_name 字段（如果不存在）
        try:
            execute_update("""
                ALTER TABLE t_daily_report_history 
                ADD COLUMN IF NOT EXISTS config_name VARCHAR(200) NULL COMMENT '配置名称'
            """)
        except Exception as e:
            print(f"[数据库] 添加 config_name 字段时出错（可能已存在）: {e}")
        
        return jsonify({'success': True, 'message': '数据库表初始化成功'})
    except Exception as e:
        return jsonify({'success': False, 'message': str(e)}), 500
