/**
 * Framework 配置文件
 * 基于 node-core-framework 的配置
 */

const path = require("path");
const baseConfig = require("./config.js");
const customSchemas = require("./custom.schemas.js");

module.exports = {
  // ===== 必需配置 =====
  env: process.env.NODE_ENV || 'development',
  "project_key": "fullstack_template",
  // 数据库配置（必需）
  db: {
    username: baseConfig.db.username,
    password: baseConfig.db.password,
    database: baseConfig.db.database,
    host: baseConfig.db.host,
    port: baseConfig.db.port || 3306,
    dialect: baseConfig.db.dialect || 'mysql',
    timezone: '+08:00',
    // 远程 MySQL 常见：wait_timeout / 网络设备掐断空闲连接 → 池中连接已死仍被复用 → SequelizeConnectionError
    dialectOptions: {
      connectTimeout: 60000,
      // mysql2@2+ 有效；旧版会忽略未知项
      enableKeepAlive: true,
      keepAliveInitialDelay: 10000,
    },
    pool: {
      max: 50,
      // min>0 会长期占着连接，服务端先断开后易 “Connection lost”；开发/低频接口建议 0
      min: 0,
      acquire: 60000,
      // 空闲超过 idle(ms) 释放回池，应小于 MySQL wait_timeout（常见 600～28800s）
      idle: 10000,
      // 定期清理池中空闲连接，降低复用到已被服务端关闭的 TCP
      evict: 15000,
    },
    slowSQLThreshold: 1000,
    logging: (() => {
      // 启用SQL监控

      return (sql, timing) => {
        // 调用监控函数
      
        // 开发环境仍然输出日志
        if (process.env.NODE_ENV === 'development') {
          console.log(`[SQL] ${timing}ms - ${typeof sql === 'string' ? sql : (sql.sql || JSON.stringify(sql))}`);
        }
      };
    })()
  },

  // API 路径配置（必需）：模板仅保留管理端业务控制器目录
  apiPaths: [
    {
      path: "./api/controller_admin",
      prefix: "/admin_api",
      authType: "admin",
    },
  ],

  "fileConifg": {
    "vue": {
      "api": "../../admin/src/api/",
      "view": "../../admin/src/view/"
    },
    "node": {
      "controller": "../controller_admin/",
      "model": "../model/"
    }
  },

  // API文档配置
  swagger: {
    title: "Fullstack Template API",
    version: "1.0.0",
    description: "admin-framework + node-core-framework 模板项目 API",
    contact: {
      name: '开发团队',
      email: 'dev@example.com'
    }
  },

  // ===== 建议配置 =====

  // 基础 URL（根据环境区分）
  baseUrl: (() => {
    const env = process.env.NODE_ENV || 'production';

  
    
    switch (env) {
      case "production":
        return "http://localhost:9098";
      case "development":
      default:
        return "http://localhost:9098";
    }
  })(),

  // 日志路径
  logPath: './logs',

  // 白名单 URL（不需要认证的接口）
  allowUrls: baseConfig.allowUrls,

  // 授权文件路径（可选，如果不需要授权验证可以设置为 null）
  // node-core-framework 读取顶层字段 licensePath
  licensePath: path.join(__dirname, "..", "_license", "license.lic"),


  // Redis 配置
  redis: baseConfig.redis || null,

  // 模型路径
  modelPaths: './api/model',

  // ===== 业务配置（从原 config.js 继承）=====

  // 端口配置
  port: baseConfig.port,


  // 自定义 Swagger Schemas
  customSchemas: customSchemas
};

