aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/dedo.go23
-rw-r--r--tests/dedo.go19
2 files changed, 27 insertions, 15 deletions
diff --git a/src/dedo.go b/src/dedo.go
index acf8ef1..29cfb45 100644
--- a/src/dedo.go
+++ b/src/dedo.go
@@ -104,6 +104,13 @@ type elemRef struct {
index int
}
+type IDedo interface{
+ Close() error
+ View (func(tx *Tx) error) error
+ Update(func(tx *Tx) error) error
+ Path() string
+}
+
/// DB represents a collection of buckets persisted to a file on disk. All data
/// access is performed through transactions which can be obtained through the
/// DB. All the functions on DB will return a ErrDatabaseNotOpen if accessed
@@ -289,7 +296,7 @@ type argsT struct{
type commandT struct{
name string
getopt func(argsT, io.Writer) (argsT, bool)
- exec func(argsT, *DB, io.Reader, io.Writer) error
+ exec func(argsT, IDedo, io.Reader, io.Writer) error
}
@@ -1619,7 +1626,7 @@ func initDB(db *DB, size int64) error {
/// Open creates and opens a database at the given path. If the file does not
/// exist then it will be created automatically.
-func OpenWith(path string, options OpenOptionsT) (*DB, error) {
+func OpenWith(path string, options OpenOptionsT) (IDedo, error) {
file, err := openFile(path)
if err != nil {
return nil, err
@@ -1666,7 +1673,7 @@ func OpenWith(path string, options OpenOptionsT) (*DB, error) {
return db, nil
}
-func Open(path string) (*DB, error) {
+func Open(path string) (IDedo, error) {
return OpenWith(path, defaultOptions)
}
@@ -3832,7 +3839,7 @@ func setGetopt(args argsT, w io.Writer) (argsT, bool) {
return args, true
}
-func checkExec(args argsT, db *DB, _r io.Reader, _w io.Writer) error {
+func checkExec(args argsT, db IDedo, _r io.Reader, _w io.Writer) error {
return db.View(func(tx *Tx) error {
var errs error
for err := range tx.Check() {
@@ -3842,7 +3849,7 @@ func checkExec(args argsT, db *DB, _r io.Reader, _w io.Writer) error {
})
}
-func getExec(args argsT, db *DB, r io.Reader, w io.Writer) error {
+func getExec(args argsT, db IDedo, r io.Reader, w io.Writer) error {
return db.View(func(tx *Tx) error {
bucket := tx.Bucket(args.bucket)
if bucket == nil {
@@ -3859,7 +3866,7 @@ func getExec(args argsT, db *DB, r io.Reader, w io.Writer) error {
})
}
-func setExec(args argsT, db *DB, r io.Reader, w io.Writer) error {
+func setExec(args argsT, db IDedo, r io.Reader, w io.Writer) error {
return db.Update(func(tx *Tx) error {
bucket, err := tx.CreateBucketIfNotExists(args.bucket)
if err != nil {
@@ -3870,7 +3877,7 @@ func setExec(args argsT, db *DB, r io.Reader, w io.Writer) error {
})
}
-func rmExec(args argsT, db *DB, r io.Reader, w io.Writer) error {
+func rmExec(args argsT, db IDedo, r io.Reader, w io.Writer) error {
return db.Update(func(tx *Tx) error {
bucket := tx.Bucket(args.bucket)
if bucket == nil {
@@ -3881,7 +3888,7 @@ func rmExec(args argsT, db *DB, r io.Reader, w io.Writer) error {
})
}
-func listExec(args argsT, db *DB, r io.Reader, w io.Writer) error {
+func listExec(args argsT, db IDedo, r io.Reader, w io.Writer) error {
return db.View(func(tx *Tx) error {
if len(args.bucket) == 0 {
return tx.ForEach(func(
diff --git a/tests/dedo.go b/tests/dedo.go
index 1d585c6..bd10ae1 100644
--- a/tests/dedo.go
+++ b/tests/dedo.go
@@ -488,7 +488,7 @@ func test_runCommand() {
good := commandT{
exec: func(
_ argsT,
- _ *DB,
+ _ IDedo,
_ io.Reader,
w io.Writer,
) error {
@@ -499,7 +499,7 @@ func test_runCommand() {
bad := commandT{
exec: func(
_ argsT,
- _ *DB,
+ _ IDedo,
_ io.Reader,
w io.Writer,
) error {
@@ -3567,10 +3567,11 @@ func TestDB_Open_InitialMmapSize(t *testing.T) {
testWriteSize := 1 << 27 // 134MB
- db, err := Open(path)
+ idb, err := Open(path)
if err != nil {
t.Fatal(err)
}
+ db := idb.(*DB)
// create a long-running read transaction
// that never gets closed while writing
@@ -4306,10 +4307,11 @@ func ExampleDB_View() {
func ExampleDB_Begin_ReadOnly() {
// Open the database.
- db, err := Open(tempfile())
+ idb, err := Open(tempfile())
if err != nil {
log.Fatal(err)
}
+ db := idb.(*DB)
defer os.Remove(db.Path())
// Create a bucket using a read-write transaction.
@@ -4589,10 +4591,11 @@ type WDB struct {
// MustOpenDB returns a new, open DB at a temporary location.
func MustOpenDB() *WDB {
- db, err := Open(tempfile())
+ idb, err := Open(tempfile())
if err != nil {
panic(err)
}
+ db := idb.(*DB)
return &WDB{db}
}
@@ -6471,10 +6474,11 @@ func TestTx_WriteTo_Error_Normal(t *testing.T) {
func ExampleTx_Rollback() {
// Open the database.
- db, err := Open(tempfile())
+ idb, err := Open(tempfile())
if err != nil {
log.Fatal(err)
}
+ db := idb.(*DB)
defer os.Remove(db.Path())
// Create a bucket.
@@ -6541,10 +6545,11 @@ func MustOpen2() *WDB2 {
f.Close()
os.Remove(f.Name())
- db, err := Open(f.Name())
+ idb, err := Open(f.Name())
if err != nil {
panic(err.Error())
}
+ db := idb.(*DB)
return &WDB2{DB: db, Path: f.Name()}
}