mirror of
https://github.com/mjl-/mox.git
synced 2025-07-12 17:04:39 +03:00
mox!
This commit is contained in:
24
store/transact.go
Normal file
24
store/transact.go
Normal file
@ -0,0 +1,24 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"github.com/mjl-/bstore"
|
||||
)
|
||||
|
||||
// todo: get rid of this. it's a bad idea to indiscriminately turn all panics into an error.
|
||||
func extransact(db *bstore.DB, write bool, fn func(tx *bstore.Tx) error) (rerr error) {
|
||||
defer func() {
|
||||
x := recover()
|
||||
if x == nil {
|
||||
return
|
||||
}
|
||||
if err, ok := x.(error); ok {
|
||||
rerr = err
|
||||
} else {
|
||||
panic(x)
|
||||
}
|
||||
}()
|
||||
if write {
|
||||
return db.Write(fn)
|
||||
}
|
||||
return db.Read(fn)
|
||||
}
|
Reference in New Issue
Block a user