waveterm/wavesrv/pkg/sstore/map.go
2023-10-16 21:31:13 -07:00

37 lines
706 B
Go

// Copyright 2023, Command Line Inc.
// SPDX-License-Identifier: Apache-2.0
package sstore
import (
"context"
)
func WithTxRtn[RT any](ctx context.Context, fn func(tx *TxWrap) (RT, error)) (RT, error) {
var rtn RT
txErr := WithTx(ctx, func(tx *TxWrap) error {
temp, err := fn(tx)
if err != nil {
return err
}
rtn = temp
return nil
})
return rtn, txErr
}
func WithTxRtn3[RT1 any, RT2 any](ctx context.Context, fn func(tx *TxWrap) (RT1, RT2, error)) (RT1, RT2, error) {
var rtn1 RT1
var rtn2 RT2
txErr := WithTx(ctx, func(tx *TxWrap) error {
temp1, temp2, err := fn(tx)
if err != nil {
return err
}
rtn1 = temp1
rtn2 = temp2
return nil
})
return rtn1, rtn2, txErr
}