mirror of
https://github.com/garethgeorge/backrest.git
synced 2025-12-16 10:35:32 +00:00
38 lines
776 B
Go
38 lines
776 B
Go
package sqlitestore
|
|
|
|
import (
|
|
"zombiezen.com/go/sqlite"
|
|
"zombiezen.com/go/sqlite/sqlitex"
|
|
)
|
|
|
|
// withSqliteTransaction should be used when the function only executes reads
|
|
func withSqliteTransaction(conn *sqlite.Conn, f func() error) error {
|
|
var err error
|
|
endFunc := sqlitex.Transaction(conn)
|
|
err = f()
|
|
endFunc(&err)
|
|
return err
|
|
}
|
|
|
|
func withImmediateSqliteTransaction(conn *sqlite.Conn, f func() error) error {
|
|
var err error
|
|
endFunc, err := sqlitex.ImmediateTransaction(conn)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = f()
|
|
endFunc(&err)
|
|
return err
|
|
}
|
|
|
|
func withExclusiveSqliteTransaction(conn *sqlite.Conn, f func() error) error {
|
|
var err error
|
|
endFunc, err := sqlitex.ExclusiveTransaction(conn)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = f()
|
|
endFunc(&err)
|
|
return err
|
|
}
|