package com.zioinfo.kintex.common.error;

/** 도메인 예외 — {@link ErrorCode} 기반. 메시지는 사용자 노출용 요약만 담는다(민감정보 금지). */
public class ApiException extends RuntimeException {

    private final ErrorCode code;

    public ApiException(ErrorCode code) {
        super(code.defaultMessage());
        this.code = code;
    }

    public ApiException(ErrorCode code, String message) {
        super(message);
        this.code = code;
    }

    public ErrorCode getCode() {
        return code;
    }

    /** 미구현 지점 표준 예외 — 501. 매퍼(PostGIS)·워커 미완 구간에 사용. */
    public static ApiException notImplemented(String what) {
        return new ApiException(ErrorCode.NOT_IMPLEMENTED,
                what + " — 매퍼/엔진 구현 대기(TODO: kintex-db-engineer / visualizer)");
    }
}
