// {{headerComment}}
export function processing(msg: any, ...optionalParams: any[]): void {
    console.log("\x1b[34m%s\x1b[0m", "[PROCESSING]" , new Date().toLocaleString() +" -", msg, ...optionalParams);
}

export function ok(msg: any, ...optionalParams: any[]): void {
    console.log("\x1b[32m%s\x1b[0m", "[OK]" , new Date().toLocaleString() +" -", msg, ...optionalParams);
}

export function info(msg: any, ...optionalParams: any[]): void {
    console.log("\x1b[36m%s\x1b[0m", "[INFO]" , new Date().toLocaleString() +" -", msg, ...optionalParams);
}

export function warn(msg: any, ...optionalParams: any[]): void {
    console.log("\x1b[33m%s\x1b[0m", "[WARN]" , new Date().toLocaleString() +" -", msg, ...optionalParams);
}

export function error(msg: any, ...optionalParams: any[]): void {
    console.log("\x1b[41m%s\x1b[0m", "[ERROR]" , new Date().toLocaleString() +" -", msg, ...optionalParams);
}

export function errorExit(msg: any, ...optionalParams: any[]): never {
    error(msg, ...optionalParams);
    process.exit(1);
}

// wrapper 
export function infoMongo(msg: any, ...optionalParams: any[]): void {
    info("[MONGO]", msg, ...optionalParams);
}

export function errorMongo(msg: any, ...optionalParams: any[]): void {
    error("[MONGO]", msg, ...optionalParams);
}

export function infoSql(msg: any, ...optionalParams: any[]): void {
    info("[SQL]", msg, ...optionalParams);
}

export function errorSql(msg: any, ...optionalParams: any[]): void {
    error("[SQL]", msg, ...optionalParams);
}

export default {
    process : processing,
    ok,
    info,
    warn,
    errorExit,
    error,

    infoMongo,
    errorMongo,
    infoSql,
    errorSql,
};
