commit 181955800fd96a1469f75a9dd0b2a61ad1a50e31
parent 88cf824d3a8be65bddbfc75f6a126572a31b9335
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sun, 17 Dec 2023 21:17:58 -0500
generate user new deposit address when a transaction is detected
Diffstat:
3 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/pkg/actions/actions.go b/pkg/actions/actions.go
@@ -231,10 +231,24 @@ func xmrWatch(db *database.DkfDB) {
}
for _, transfer := range transfers.In {
if user, err := db.GetUserByPokerXmrSubAddress(transfer.Address); err == nil {
- pokerTransfer, err := db.GetOrCreatePokerXmrTransaction(user.ID, transfer)
+ userID := user.ID
+ pokerTransfer, err := db.GetPokerXmrTransaction(transfer)
if err != nil {
- logrus.Error(err)
- continue
+ db.WithE(func(tx *database.DkfDB) error {
+ pokerTransfer, err = tx.CreatePokerXmrInTransaction(userID, transfer)
+ if err != nil {
+ return err
+ }
+ // Update user's xmr deposit address
+ res, err := config.Xmr().CreateAddress(&wallet1.RequestCreateAddress{})
+ if err != nil {
+ return err
+ }
+ if err := tx.SetPokerSubAddress(userID, res.Address); err != nil {
+ return err
+ }
+ return nil
+ })
}
if pokerTransfer.Processed {
continue
diff --git a/pkg/database/tablePokerXmrTransactions.go b/pkg/database/tablePokerXmrTransactions.go
@@ -44,20 +44,23 @@ func (d *DkfDB) GetUserPokerXmrTransactions(userID UserID) (out []PokerXmrTransa
return
}
-func (d *DkfDB) GetOrCreatePokerXmrTransaction(userID UserID, transfer *wallet.Transfer) (out PokerXmrTransaction, err error) {
- if err = d.db.First(&out, "tx_id = ?", transfer.TxID).Error; err != nil {
- out = PokerXmrTransaction{
- TxID: transfer.TxID,
- UserID: userID,
- Address: transfer.Address,
- Height: transfer.Height,
- Amount: Piconero(transfer.Amount),
- Fee: Piconero(transfer.Fee),
- Confirmations: transfer.Confirmations,
- IsIn: true,
- }
- err = d.db.Create(&out).Error
+func (d *DkfDB) GetPokerXmrTransaction(transfer *wallet.Transfer) (out PokerXmrTransaction, err error) {
+ err = d.db.First(&out, "tx_id = ?", transfer.TxID).Error
+ return
+}
+
+func (d *DkfDB) CreatePokerXmrInTransaction(userID UserID, transfer *wallet.Transfer) (out PokerXmrTransaction, err error) {
+ out = PokerXmrTransaction{
+ TxID: transfer.TxID,
+ UserID: userID,
+ Address: transfer.Address,
+ Height: transfer.Height,
+ Amount: Piconero(transfer.Amount),
+ Fee: Piconero(transfer.Fee),
+ Confirmations: transfer.Confirmations,
+ IsIn: true,
}
+ err = d.db.Create(&out).Error
return
}
diff --git a/pkg/database/tableUsers.go b/pkg/database/tableUsers.go
@@ -694,3 +694,8 @@ func (db *DkfDB) GetUsersXmrBalance() (out Piconero, err error) {
err = db.db.Raw(`SELECT SUM(xmr_balance) as sum_xmr_balance FROM users`).Scan(&tmp).Error
return tmp.SumXmrBalance, err
}
+
+func (d *DkfDB) SetPokerSubAddress(userID UserID, subAddress string) (err error) {
+ err = d.db.Exec(`UPDATE users SET poker_xmr_sub_address = ? WHERE id = ?`, subAddress, userID).Error
+ return
+}