From 4ab2e0d498e09cf0196f91484ed42475873b320c Mon Sep 17 00:00:00 2001 From: Ori Newman Date: Tue, 3 Nov 2020 08:08:02 -0800 Subject: [PATCH] [NOD-1507] Implement model.DBTransaction (#997) --- domain/consensus/database/dbmanager.go | 6 ++++- domain/consensus/database/transaction.go | 34 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 domain/consensus/database/transaction.go diff --git a/domain/consensus/database/dbmanager.go b/domain/consensus/database/dbmanager.go index 7984da4b2..3474bcaf4 100644 --- a/domain/consensus/database/dbmanager.go +++ b/domain/consensus/database/dbmanager.go @@ -27,7 +27,11 @@ func (dbw *dbManager) Cursor(bucket model.DBBucket) (model.DBCursor, error) { } func (dbw *dbManager) Begin() (model.DBTransaction, error) { - panic("unimplemented") + transaction, err := dbw.db.Begin() + if err != nil { + return nil, err + } + return newDBTransaction(transaction), nil } // New returns wraps the given database as an instance of model.DBManager diff --git a/domain/consensus/database/transaction.go b/domain/consensus/database/transaction.go new file mode 100644 index 000000000..feb1bf8be --- /dev/null +++ b/domain/consensus/database/transaction.go @@ -0,0 +1,34 @@ +package database + +import ( + "github.com/kaspanet/kaspad/domain/consensus/model" + "github.com/kaspanet/kaspad/infrastructure/db/database" +) + +type dbTransaction struct { + transaction database.Transaction +} + +func (d dbTransaction) Put(key model.DBKey, value []byte) error { + return d.transaction.Put(dbKeyToDatabaseKey(key), value) +} + +func (d dbTransaction) Delete(key model.DBKey) error { + return d.transaction.Delete(dbKeyToDatabaseKey(key)) +} + +func (d dbTransaction) Rollback() error { + return d.transaction.Rollback() +} + +func (d dbTransaction) Commit() error { + return d.Commit() +} + +func (d dbTransaction) RollbackUnlessClosed() error { + return d.RollbackUnlessClosed() +} + +func newDBTransaction(transaction database.Transaction) model.DBTransaction { + return &dbTransaction{transaction: transaction} +}