sqlitex.go 409 B

123456789101112131415161718192021
  1. package sqlitex
  2. import (
  3. "errors"
  4. "fmt"
  5. sqlite "github.com/go-llsqlite/adapter"
  6. )
  7. func WithTransactionRollbackOnError(conn *sqlite.Conn, level string, inside func() error) (err error) {
  8. err = Exec(conn, fmt.Sprintf("begin %v", level), nil)
  9. if err != nil {
  10. return
  11. }
  12. err = inside()
  13. query := "rollback"
  14. if err == nil {
  15. query = "commit"
  16. }
  17. err = errors.Join(err, Exec(conn, query, nil))
  18. return
  19. }