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
}