// Filename: internal/response/response.go
package response

import (
	"gemini-balancer/internal/errors"
	"net/http"

	"github.com/gin-gonic/gin"
)

type SuccessResponse struct {
	Success bool        `json:"success"`
	Data    interface{} `json:"data"`
}

type ErrorResponse struct {
	Success bool  `json:"success"`
	Error   gin.H `json:"error"`
}

func Success(c *gin.Context, data interface{}) {
	c.JSON(http.StatusOK, SuccessResponse{
		Success: true,
		Data:    data,
	})
}

func Created(c *gin.Context, data interface{}) {
	c.JSON(http.StatusCreated, SuccessResponse{
		Success: true,
		Data:    data,
	})
}

func NoContent(c *gin.Context) {
	c.Status(http.StatusNoContent)
}

func Error(c *gin.Context, err *errors.APIError) {
	c.JSON(err.HTTPStatus, ErrorResponse{
		Success: false,
		Error: gin.H{
			"code":    err.Code,
			"message": err.Message,
		},
	})
}
