diff --git a/controllers/balance.ctrl.go b/controllers/balance.ctrl.go index bc9831c..1f6008e 100644 --- a/controllers/balance.ctrl.go +++ b/controllers/balance.ctrl.go @@ -9,16 +9,14 @@ import ( ) // BalanceController : BalanceController struct -type BalanceController struct{} +type BalanceController struct { + svc *lib.LndhubService +} // Balance : Balance Controller -func (BalanceController) Balance(c echo.Context) error { - ctx := c.(*lib.LndhubService) - c.Logger().Warn(ctx.User.ID) - - db := ctx.DB - - balance, err := ctx.User.CurrentBalance(context.TODO(), db) +func (controller *BalanceController) Balance(c echo.Context) error { + userId := c.Get("UserID").(int64) + balance, err := controller.svc.CurrentBalance(context.TODO(), userId) if err != nil { return err } diff --git a/db/models/user.go b/db/models/user.go index cbcec60..69470c6 100644 --- a/db/models/user.go +++ b/db/models/user.go @@ -28,21 +28,4 @@ func (u *User) BeforeAppendModel(ctx context.Context, query bun.Query) error { return nil } -func (u *User) AccountFor(accountType string, ctx context.Context, db bun.IDB) (Account, error) { - account := Account{} - err := db.NewSelect().Model(&account).Where("user_id = ? AND type= ?", u.ID, accountType).Limit(1).Scan(ctx) - return account, err -} - -func (u *User) CurrentBalance(ctx context.Context, db bun.IDB) (int64, error) { - var balance int64 - - account, err := u.AccountFor("current", ctx, db) - if err != nil { - return balance, err - } - err = db.NewSelect().Table("account_ledgers").ColumnExpr("sum(account_ledgers.amount) as balance").Where("account_ledgers.account_id = ?", account.ID).Scan(context.TODO(), &balance) - return balance, err -} - var _ bun.BeforeAppendModelHook = (*User)(nil) diff --git a/lib/service.go b/lib/service.go index d56547c..e506bd8 100644 --- a/lib/service.go +++ b/lib/service.go @@ -1,6 +1,9 @@ package lib import ( + "context" + + "github.com/getAlby/lndhub.go/db/models" "github.com/lightningnetwork/lnd/lnrpc" "github.com/uptrace/bun" ) @@ -9,3 +12,20 @@ type LndhubService struct { DB *bun.DB LndClient *lnrpc.LightningClient } + +func (svc *LndhubService) CurrentBalance(ctx context.Context, userId int64) (int64, error) { + var balance int64 + + account, err := svc.AccountFor(ctx, "current", userId) + if err != nil { + return balance, err + } + err = svc.DB.NewSelect().Table("account_ledgers").ColumnExpr("sum(account_ledgers.amount) as balance").Where("account_ledgers.account_id = ?", account.ID).Scan(context.TODO(), &balance) + return balance, err +} + +func (svc *LndhubService) AccountFor(ctx context.Context, accountType string, userId int64) (models.Account, error) { + account := models.Account{} + err := svc.DB.NewSelect().Model(&account).Where("user_id = ? AND type= ?", userId, accountType).Limit(1).Scan(ctx) + return account, err +}