import { Catch, ILogger, Logger, MidwayHttpError } from "@midwayjs/core";
import { Context } from "@midwayjs/koa";
import { ComoNestUtils } from "como-nestjs-utils";
@Catch()
export class ErrorDefaultFilter {
    @Logger()
    logger: ILogger;
    /**
     * 运行错误
     * @param err
     * @param ctx
     * @returns
     */
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    async catch(err: MidwayHttpError, ctx: Context) {
        if(err.status === 404) {
            this.logger.error(`请求IP:${ctx.ip} 访问地址:${ctx.request.originalUrl} 请求地址:${ctx.request.headers['user-agent']}`);
        } else if(err.code !== 'comovalidator') {
            this.logger.error(err);
        }
        return ComoNestUtils.Ins.AppResult(err.message ?? ComoNestUtils.Ins.JsonEncode(err),null,true,err.status);
    }
}

/**
 * 自定义数据验证错误
 */
export class ComoValidatorError extends MidwayHttpError  {
    /**
     * 构造函数
     * @param errName
     */
    constructor(errName:string,code?:number) {
        super(errName,code ?? -1);
        this.code = 'comovalidator';
        this.status = code ?? -1;
    }
}