22 lines
409 B
Go
22 lines
409 B
Go
package sqlitex
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
sqlite "github.com/go-llsqlite/adapter"
|
|
)
|
|
|
|
func WithTransactionRollbackOnError(conn *sqlite.Conn, level string, inside func() error) (err error) {
|
|
err = Exec(conn, fmt.Sprintf("begin %v", level), nil)
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = inside()
|
|
query := "rollback"
|
|
if err == nil {
|
|
query = "commit"
|
|
}
|
|
err = errors.Join(err, Exec(conn, query, nil))
|
|
return
|
|
}
|