本文整理汇总了Golang中ftnox/com/db.ModelTx.Exec方法的典型用法代码示例。如果您正苦于以下问题:Golang ModelTx.Exec方法的具体用法?Golang ModelTx.Exec怎么用?Golang ModelTx.Exec使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ftnox/com/db.ModelTx
的用法示例。
在下文中一共展示了ModelTx.Exec方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: SaveAPIKey
func SaveAPIKey(tx *db.ModelTx, apiKey *APIKey) *APIKey {
_, err := tx.Exec(
`INSERT INTO auth_api_key (`+APIKeyModel.FieldsInsert+`)
VALUES (`+APIKeyModel.Placeholders+`)`,
apiKey,
)
if err != nil {
panic(err)
}
return apiKey
}
示例2: UpdateDepositSetStatus
// NOTE: This should be called in a serializable transaction to ensure that
// the user's balance gets updated in a safe manner.
func UpdateDepositSetStatus(tx *db.ModelTx, depositId int64, status int32) {
updated := time.Now().Unix()
_, err := tx.Exec(
`UPDATE account_deposit
SET status=?, updated=?
WHERE id=?`,
status, updated, depositId,
)
if err != nil {
panic(err)
}
}
示例3: UpdatePriceLog
func UpdatePriceLog(tx *db.ModelTx, plog *PriceLog) {
_, err := tx.Exec(
`UPDATE exchange_price_log
SET low=?, high=?, close=?, ask_volume=?, bid_volume=?
WHERE market=? AND interval=? AND time=?`,
plog.Low, plog.High, plog.Close, plog.AskVolume, plog.BidVolume,
plog.Market, plog.Interval, plog.Time,
)
if err != nil {
panic(err)
}
}
示例4: UpdateOrder
func UpdateOrder(tx *db.ModelTx, order *Order) {
order.Updated = time.Now().Unix()
_, err := tx.Exec(
`UPDATE exchange_order
SET status=?, filled=?, basis_filled=?, updated=?
WHERE id=?`,
order.Status, order.Filled, order.BasisFilled, order.Updated, order.Id,
)
if err != nil {
panic(err)
}
}
示例5: UpdateWithdrawals
func UpdateWithdrawals(tx *db.ModelTx, wthIds []interface{}, oldStatus, newStatus int, wtxId int64) {
if len(wthIds) == 0 {
return
}
res, err := tx.Exec(
`UPDATE account_withdrawal
SET status=?, wtx_id=?, updated=?
WHERE status=? AND id IN (`+Placeholders(len(wthIds))+`)`,
append([]interface{}{newStatus, wtxId, time.Now().Unix(), oldStatus}, wthIds...)...,
)
if err != nil {
panic(err)
}
count, err := res.RowsAffected()
if err != nil {
panic(err)
}
if int(count) != len(wthIds) {
panic(NewError("Unexpected affected rows count: %v Expected %v", count, len(wthIds)))
}
}
示例6: UpdatePaymentsSpent
func UpdatePaymentsSpent(tx *db.ModelTx, paymentIds []interface{}, oldStatus, newStatus int, wtxId int64) {
if len(paymentIds) == 0 {
return
}
now := time.Now().Unix()
res, err := tx.Exec(
`UPDATE payment
SET spent=?, wtx_id=?, updated=?
WHERE spent=? AND id IN (`+Placeholders(len(paymentIds))+`)`,
append([]interface{}{newStatus, wtxId, now, oldStatus}, paymentIds...)...,
)
if err != nil {
panic(err)
}
count, err := res.RowsAffected()
if int(count) != len(paymentIds) {
panic(NewError("Unexpected affected rows count: %v Expected %v", count, len(paymentIds)))
}
if err != nil {
panic(err)
}
}
示例7: UpdateBalanceByWallet
// Adds or subtracts an amount to a user's wallet.
// nonnegative: panics with INSUFFICIENT_FUNDS_ERROR if resulting balance is negative.
// Returns the new balance
func UpdateBalanceByWallet(tx *db.ModelTx, userId int64, wallet string, coin string, diff int64, nonnegative bool) *Balance {
var balance Balance
// Get existing balance.
err := tx.QueryRow(
`SELECT `+BalanceModel.FieldsSimple+`
FROM account_balance WHERE
user_id=? AND wallet=? AND coin=?`,
userId, wallet, coin,
).Scan(&balance)
// Ensure nonnegative
if nonnegative && balance.Amount+diff < 0 {
panic(INSUFFICIENT_FUNDS_ERROR)
}
// First time balance?
if err == sql.ErrNoRows {
// Create new balance
balance := Balance{UserId: userId, Wallet: wallet, Coin: coin, Amount: diff}
SaveBalance(tx, &balance)
return &balance
}
// Update balance
balance.Amount += diff
_, err = tx.Exec(
`UPDATE account_balance
SET amount=?
WHERE user_id=? AND wallet=? AND coin=?`,
balance.Amount, userId, wallet, coin,
)
if err != nil {
panic(err)
}
return &balance
}