package com.xyw.console.common;

public record ApiResponse<T>(Integer code, String message, T data) {

  /**
   * 代码作用（白话）：构造成功返回体，统一输出前端正在使用的 code/message/data 结构；关联文件：F:/Project/xyw_console/backend/src/main/java/com/xyw/console/wechat/controller/WxDataController.java、F:/Project/xyw_console/src/modules/shared/wechat-api-client.js；关联逻辑（调用链/消息链/数据流）：Controller 成功分支 -> ApiResponse.success() -> 前端 parseJsonResponse() 判断成功。
   */
  public static <T> ApiResponse<T> success(T data) {
    return new ApiResponse<>(200, "success", data);
  }

  /**
   * 代码作用（白话）：构造带自定义文案的成功返回体，让新增和编辑可以返回更明确的提示信息；关联文件：F:/Project/xyw_console/backend/src/main/java/com/xyw/console/wechat/controller/WxDataController.java、F:/Project/xyw_console/src/modules/wechat/wechat-add-dialog.js；关联逻辑（调用链/消息链/数据流）：Controller 保存成功 -> ApiResponse.success(message, data) -> 前端保存成功提示。
   */
  public static <T> ApiResponse<T> success(String message, T data) {
    return new ApiResponse<>(200, message, data);
  }

  /**
   * 代码作用（白话）：构造失败返回体，让前端即使拿到 4xx 响应也能读到明确错误信息；关联文件：F:/Project/xyw_console/backend/src/main/java/com/xyw/console/wechat/controller/WxDataController.java、F:/Project/xyw_console/src/modules/shared/wechat-api-client.js；关联逻辑（调用链/消息链/数据流）：Controller 失败分支 -> ApiResponse.error() -> 前端 parseJsonResponse() 抛出 message。
   */
  public static <T> ApiResponse<T> error(Integer code, String message) {
    return new ApiResponse<>(code, message, null);
  }
}
