package infra

import (
	"github.com/gin-gonic/gin"
	"google.golang.org/grpc/status"
)

var Response Reply

type Reply struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
	Data any    `json:"data"`
}

func (reply *Reply) Success(ctx *gin.Context, data any) {
	reply.Code = 200
	reply.Data = data
	reply.Msg = ""
	if data == nil {
		reply.Data = ""
	}
	ctx.JSON(200, reply)
}
func (reply *Reply) Error(ctx *gin.Context, err error) {
	reply.Code = 500
	reply.Data = ""
	// Status code defaults to 500
	e, ok := status.FromError(err)
	if ok {
		reply.Code = int(e.Code())
	}
	reply.Msg = e.Message()

	// Send error
	ctx.JSON(200, reply)
}