1

How to change UpdateColumns of DB.Transaction to asynchronous in Go/redis-sentinel, I have some update action with below code in go, and we would like to change them to asynchronous in Go and redis-sentinel, I am very new to Go, is there anyone know how to start? Thanks so much for any advice.

err = models.DB.Transaction(func(ts *gorm.DB) error {
    if res.count > 0 {
        err3 := models.DB.Model(&cnt).Where("id = ?", res.count).UpdateColumns(map[string]interface{}{"pay_status": 0}).Error
        if err3 != nil {
            return errors.New("Failed, please try later")
        }
    }

    good_update := map[string]interface{}{
        "stk_num": gorm.Expr("stk_num - ?", 1),
    }
    err1 := ts.Model(&trade).UpdateColumns(good_update).Error
    if err1 != nil {
        return errors.New("Failed, please try later")
    }

    err2 := ts.Create(order).Error
    if err2 != nil {
        return errors.New("Failed, please try later")
    }

    err3 = ts.Create(payment).Error
    if err3 != nil {
        return errors.New("Failed, please try later")
    }

    return nil
})
if err != nil {
    rds.Del(c.Cts.Request.Context(), tradeLock).Val()
    service.DeleteStk(int(res.TradeID))
    c.Error(nil, err.Error())
    return
}
Elsa
  • 1
  • 1
  • 8
  • 27

0 Answers0