Files
lndhub.go/controllers_v2/balance.ctrl.go
2023-09-22 17:12:49 +02:00

57 lines
1.5 KiB
Go

package v2controllers
import (
"net/http"
"github.com/getAlby/lndhub.go/lib/responses"
"github.com/getAlby/lndhub.go/lib/service"
"github.com/labstack/echo/v4"
"github.com/labstack/gommon/log"
)
// BalanceController : BalanceController struct
type BalanceController struct {
svc *service.LndhubService
}
func NewBalanceController(svc *service.LndhubService) *BalanceController {
return &BalanceController{svc: svc}
}
type BalanceResponse struct {
Balance int64 `json:"balance"`
Currency string `json:"currency"`
Unit string `json:"unit"`
}
// Balance godoc
// @Summary Retrieve balance
// @Description Current user's balance in satoshi
// @Accept json
// @Produce json
// @Tags Account
// @Success 200 {object} BalanceResponse
// @Failure 400 {object} responses.ErrorResponse
// @Failure 500 {object} responses.ErrorResponse
// @Router /v2/balance [get]
// @Security OAuth2Password
func (controller *BalanceController) Balance(c echo.Context) error {
userId := c.Get("UserID").(int64)
balance, err := controller.svc.CurrentUserBalance(c.Request().Context(), userId)
if err != nil {
c.Logger().Errorj(
log.JSON{
"message": "failed to retrieve user balance",
"lndhub_user_id": userId,
"error": err,
},
)
return c.JSON(http.StatusBadRequest, responses.BadArgumentsError)
}
return c.JSON(http.StatusOK, &BalanceResponse{
Balance: balance,
Currency: "BTC",
Unit: "sat",
})
}