diff --git a/api/common-api/src/main/java/kr/ac/kookmin/stream/ApiResponse.java b/api/common-api/src/main/java/kr/ac/kookmin/stream/ApiResponse.java new file mode 100644 index 0000000..4664abe --- /dev/null +++ b/api/common-api/src/main/java/kr/ac/kookmin/stream/ApiResponse.java @@ -0,0 +1,41 @@ +package kr.ac.kookmin.stream; + +import kr.ac.kookmin.stream.common.BusinessException; +import kr.ac.kookmin.stream.common.ErrorCode; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor(access = AccessLevel.PRIVATE) +public final class ApiResponse { + + private static final String SUCCESS_CODE = "SUCCESS"; + private static final String SUCCESS_MESSAGE = "요청에 성공했습니다."; + + private final boolean success; + private final String code; + private final String message; + private final T data; + + public static ApiResponse success(T data) { + return new ApiResponse<>(true, SUCCESS_CODE, SUCCESS_MESSAGE, data); + } + + public static ApiResponse success() { + return success(null); + } + + public static ApiResponse error(BusinessException exception) { + ErrorCode errorCode = exception.getErrorCode(); + return new ApiResponse<>(false, errorCode.name(), exception.getMessage(), null); + } + + public static ApiResponse error(ErrorCode errorCode) { + return new ApiResponse<>(false, errorCode.name(), errorCode.message(), null); + } + + public static ApiResponse error(String code, String message) { + return new ApiResponse<>(false, code, message, null); + } +} diff --git a/api/common-api/src/main/java/kr/ac/kookmin/stream/CursorSliceResponse.java b/api/common-api/src/main/java/kr/ac/kookmin/stream/CursorSliceResponse.java new file mode 100644 index 0000000..21e6277 --- /dev/null +++ b/api/common-api/src/main/java/kr/ac/kookmin/stream/CursorSliceResponse.java @@ -0,0 +1,15 @@ +package kr.ac.kookmin.stream; + +import java.util.List; +import kr.ac.kookmin.stream.common.CursorSliceResult; + +public record CursorSliceResponse(List content, boolean hasNext, Long nextCursor) { + + public static CursorSliceResponse from(CursorSliceResult result) { + return new CursorSliceResponse<>( + result.content(), + result.hasNext(), + result.nextCursor() + ); + } +} diff --git a/core/common/src/main/java/kr/ac/kookmin/stream/common/CursorSliceResult.java b/core/common/src/main/java/kr/ac/kookmin/stream/common/CursorSliceResult.java new file mode 100644 index 0000000..4bd0d3d --- /dev/null +++ b/core/common/src/main/java/kr/ac/kookmin/stream/common/CursorSliceResult.java @@ -0,0 +1,5 @@ +package kr.ac.kookmin.stream.common; + +import java.util.List; + +public record CursorSliceResult(List content, boolean hasNext, Long nextCursor) {}