import mysql from "mysql2/promise";
import fs from "fs/promises";
import path from "path";
import config from "../config.js";

/**
 * 执行SQL文件
 * @param {string} sqlFilePath - SQL文件路径
 * @returns {Promise<void>}
 */
async function executeSqlFile(sqlFilePath) {
  try {
    console.log("开始执行SQL文件:", sqlFilePath);

    // 首先，我们需要连接到MySQL服务器（不指定数据库，因为SQL文件中会创建数据库）
    const connection = await mysql.createConnection({
      host: config.MYSQL.HOST,
      user: config.MYSQL.USER,
      password: config.MYSQL.PASSWORD,
      multipleStatements: true, // 允许执行多条SQL语句
    });

    // 读取SQL文件内容
    const sqlContent = await fs.readFile(sqlFilePath, "utf8");
    console.log("SQL文件读取成功");

    // 执行SQL语句
    console.log("开始执行SQL语句...");
    await connection.query(sqlContent);
    console.log("SQL语句执行成功");

    // 关闭连接
    await connection.end();
    console.log("数据库连接已关闭");
  } catch (error) {
    console.error("执行SQL文件时出错:", error.message);
    throw error;
  }
}

// 初始化数据库数据
async function initDatabase() {
  try {
    // 获取SQL文件的绝对路径
    const sqlFilePath = path.join(process.cwd(), "src", "database", "duda.sql");

    // 执行SQL文件
    await executeSqlFile(sqlFilePath);

    console.log("数据库初始化成功！");
    return true;
  } catch (error) {
    console.error("数据库初始化失败:", error.message);
    return false;
  }
}

// 执行数据库初始化
initDatabase();
