package thyyxxk.webserver.config;

import org.apache.poi.ss.formula.functions.T;
import org.jetbrains.annotations.NotNull;
import thyyxxk.webserver.config.exception.BizException;
import thyyxxk.webserver.config.exception.ExceptionEnum;
import thyyxxk.webserver.utils.StringUtil;

public interface Assertion {
    default ExceptionEnum setExceptionEnum(@NotNull ExceptionEnum exceptionEnum, String message) {
        exceptionEnum.setMessage(message);
        return exceptionEnum;
    }

    default ExceptionEnum logicalError(String message) {
        return setExceptionEnum(ExceptionEnum.LOGICAL_ERROR, message);
    }

    default void exception(ExceptionEnum exceptionEnum) {
        throw new BizException(exceptionEnum);
    }

    /**
     * 如果是对的就执行， 不对的话报错
     *
     * @param value         value
     * @param exceptionEnum 报错信息
     */
    default void isTrue(boolean value, ExceptionEnum exceptionEnum) {
        if (!value) {
            exception(exceptionEnum);
        }
    }

    default void isFalse(boolean value, ExceptionEnum exceptionEnum) {
        if (value) {
            exception(exceptionEnum);
        }
    }

    default void notBlank(String str, ExceptionEnum exceptionEnum) {
        if (StringUtil.notBlank(str)) {
            exception(exceptionEnum);
        }
    }

    default void isNoll(Object obj, ExceptionEnum exceptionEnum) {
        if (obj == null) {
            exception(exceptionEnum);
        }
    }

    default <T> T nullIf(T value, T defaultValue) {
        return StringUtil.nullIf(value, defaultValue);
    }

}
