package com.spring.common.error;

import org.springframework.http.HttpStatus;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * 예외 규칙을 정의하는 열거형입니다.
 * 
 * <p>이 열거형은 다양한 오류 상황에 대한 HTTP 상태 코드와 메시지를 정의합니다.</p>
 * 
 * <p>각 열거 상수는 특정 오류 상황을 나타내며, 이를 통해 비즈니스 로직에서 발생하는
 * 오류를 일관되게 처리할 수 있습니다.</p>
 * 
 * @author mindol
 * @version 1.0
 */
@Getter
@RequiredArgsConstructor
public enum ExceptionRule implements ErrorRule {
    
    SYSTEM_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "시스템 오류 입니다."),
    BAD_REQUEST(HttpStatus.BAD_REQUEST, "잘못된 요청입니다."),
    UNAUTHORIZED(HttpStatus.UNAUTHORIZED, "인증이 필요합니다."),
    FORBIDDEN(HttpStatus.FORBIDDEN, "접근이 금지되었습니다."),
    NOT_FOUND(HttpStatus.NOT_FOUND, "요청한 자원을 찾을 수 없습니다."),
    INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "서버에 오류가 발생했습니다."),
    CONFLICT(HttpStatus.CONFLICT, "데이터 충돌이 발생했습니다."),
    UNPROCESSABLE_ENTITY(HttpStatus.UNPROCESSABLE_ENTITY, "요청을 처리할 수 없습니다.");

    private final HttpStatus status;
    private final String message;

}
