mirror of
https://github.com/getAlby/lndhub.go.git
synced 2025-12-20 14:14:47 +01:00
40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package controllers
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
|
|
"github.com/getAlby/lndhub.go/db/models"
|
|
"github.com/getAlby/lndhub.go/lib"
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
// BalanceController : BalanceController struct
|
|
type BalanceController struct{}
|
|
|
|
// Balance : Balance Controller
|
|
func (BalanceController) Balance(c echo.Context) error {
|
|
ctx := c.(*lib.LndhubContext)
|
|
c.Logger().Warn(ctx.User.ID)
|
|
|
|
db := ctx.DB
|
|
|
|
// load user's current account
|
|
account := models.Account{}
|
|
if err := db.NewSelect().Model(&account).Where("user_id = ? AND type= ?", ctx.User.ID, "current").Limit(1).Scan(context.TODO()); err != nil {
|
|
// TODO: proper error
|
|
return err
|
|
}
|
|
// calculate the account balance
|
|
var balance int64
|
|
if err := db.NewSelect().Table("account_ledgers").ColumnExpr("sum(account_ledgers.amount) as balance").Where("account_ledgers.account_id = ?", account.ID).Scan(context.TODO(), &balance); err != nil {
|
|
return err
|
|
}
|
|
|
|
return c.JSON(http.StatusOK, echo.Map{
|
|
"BTC": echo.Map{
|
|
"AvailableBalance": balance,
|
|
},
|
|
})
|
|
}
|