/**
 * knex工具模块
 * @date 2022-03
 * @author 何华东
 */

import { logger, Context } from "mslib";
import Contants from "./Contants";

export default class KnexUtils {
    /**
     * 根据配置生成knex实例
     * 
     * 默认给定了Knex所需的大部分配置，而且接入了日志，外部只需配置connection即可，
     */
    static generateMySqlKnexInstance(config) {
        const defaults = {
            client: 'mysql2',
            pool: { min: 0, max: 10 },
            debug: Contants.IS_DEBUG,
            log: {
                warn(message) {
                    logger.warn(message);
                },
                error(message) {
                    logger.error(message);
                },
                deprecate(message) {
                    logger.error(message);
                },
                debug(message) {
                    logger.debug(message);
                },
            }
        };

        return require('knex')(Object.assign(defaults, config));
    }
}