dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit ba0b837f1e2fdfa82d5f37edae28157e6dc7aba0
parent 2ebd3b9aab966440c292925b3c3f2d2d7c5bdcfb
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 13 Dec 2023 23:16:49 -0500

cleanup

Diffstat:
Mpkg/database/tableUsers.go | 11+++++++++++
Mpkg/web/handlers/handlers.go | 16++++++++++++----
2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/pkg/database/tableUsers.go b/pkg/database/tableUsers.go @@ -672,3 +672,14 @@ func (u *User) GetImage() (image.Image, error) { } return b, nil } + +func (u *User) GetXmrBalanceStagenet(db *DkfDB) (amount Piconero, err error) { + var tmp struct{ XmrBalanceStagenet Piconero } + err = db.db.Table("users").Select("xmr_balance_stagenet").First(&tmp, "id = ?", u.ID).Error + return tmp.XmrBalanceStagenet, err +} + +func (u *User) IncrXmrBalanceStagenet(db *DkfDB, amount Piconero) (err error) { + err = db.db.Exec(`UPDATE users SET xmr_balance_stagenet = xmr_balance_stagenet + ? WHERE id = ?`, amount, u.ID).Error + return +} diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go @@ -831,10 +831,18 @@ func PokerHomeHandler(c echo.Context) error { } tx := db.Begin() - err = tx.DB().Exec(`UPDATE users SET xmr_balance_stagenet = xmr_balance_stagenet - ? WHERE id = ?`, withdrawAmount+houseFee+transactionFee, authUser.ID).Error - var tmp struct{ XmrBalanceStagenet uint64 } - tx.DB().Debug().Table("users").Select("xmr_balance_stagenet").First(&tmp, "id = ?", authUser.ID) - if tmp.XmrBalanceStagenet < 0 { + if err = authUser.IncrXmrBalanceStagenet(db, (withdrawAmount+houseFee+transactionFee)*-1); err != nil { + data.Error = err.Error() + tx.Rollback() + return c.Render(http.StatusOK, "poker", data) + } + xmrBalanceStagenet, err := authUser.GetXmrBalanceStagenet(tx) + if err != nil { + data.Error = err.Error() + tx.Rollback() + return c.Render(http.StatusOK, "poker", data) + } + if xmrBalanceStagenet < 0 { data.Error = "negative balance" tx.Rollback() return c.Render(http.StatusOK, "poker", data)