diff options
author | EuAndreh <eu@euandre.org> | 2025-02-06 18:20:39 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2025-02-06 18:37:41 -0300 |
commit | d873391c13c5cd5aa3709b29bfb153c7dda3c741 (patch) | |
tree | a657870993b9e2bb7ef579ff220fbdbea1cfa4a5 | |
parent | src/dedo.go: Remove AllocSize from DB type (diff) | |
download | dedo-d873391c13c5cd5aa3709b29bfb153c7dda3c741.tar.gz dedo-d873391c13c5cd5aa3709b29bfb153c7dda3c741.tar.xz |
src/dedo.go: Replace concrete *DB type with IDedo interface
-rw-r--r-- | src/dedo.go | 23 | ||||
-rw-r--r-- | tests/dedo.go | 19 |
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()} } |