package com.devjob.common.dto;

/**
 * EP10: 모든 서비스가 공유하는 공통 응답 래퍼.
 * EP06~09에서 각 서비스에 임시로 복제해두었던 ApiResponse를 이곳으로 통합한다.
 *
 * <pre>
 * { "success": true, "message": "success", "data": { ... } }
 * </pre>
 */
public record ApiResponse<T>(
        boolean success,
        String message,
        T data
) {
    public static <T> ApiResponse<T> ok(T data) {
        return new ApiResponse<>(true, "success", data);
    }

    public static <T> ApiResponse<T> ok(String message, T data) {
        return new ApiResponse<>(true, message, data);
    }

    public static ApiResponse<Void> fail(String message) {
        return new ApiResponse<>(false, message, null);
    }
}
