From 0a9761048eb2d5f3588a05aef33ad32005b266a6 Mon Sep 17 00:00:00 2001
From: Jonas Theis <mail@jonastheis.de>
Date: Tue, 6 Oct 2020 09:03:03 +0200
Subject: [PATCH] Remove storageprefix and flatten database package (#758)

* Remove storageprefix package and merge with flattened database package

* Bump up database version

* Update packages/database/prefix.go

Co-authored-by: Ching-Hua (Vivian) Lin <jkrvivian@gmail.com>

Co-authored-by: Angelo Capossele <angelocapossele@gmail.com>
Co-authored-by: Ching-Hua (Vivian) Lin <jkrvivian@gmail.com>
---
 .../packages/branchmanager/branchmanager.go    |  5 ++---
 dapps/valuetransfers/packages/tangle/tangle.go |  4 ++--
 packages/database/prefix.go                    | 12 ++++++++++++
 packages/database/prefix/prefix.go             | 18 ------------------
 packages/storageprefix/storageprefix.go        | 13 -------------
 packages/tangle/tangle.go                      |  4 ++--
 plugins/autopeering/local/local.go             |  4 ++--
 plugins/database/health.go                     |  4 ++--
 plugins/database/versioning.go                 |  2 +-
 9 files changed, 23 insertions(+), 43 deletions(-)
 create mode 100644 packages/database/prefix.go
 delete mode 100644 packages/database/prefix/prefix.go
 delete mode 100644 packages/storageprefix/storageprefix.go

diff --git a/dapps/valuetransfers/packages/branchmanager/branchmanager.go b/dapps/valuetransfers/packages/branchmanager/branchmanager.go
index 981eb082..ff50636f 100644
--- a/dapps/valuetransfers/packages/branchmanager/branchmanager.go
+++ b/dapps/valuetransfers/packages/branchmanager/branchmanager.go
@@ -5,13 +5,12 @@ import (
 	"fmt"
 	"sort"
 
+	"github.com/iotaledger/goshimmer/packages/database"
 	"github.com/iotaledger/hive.go/kvstore"
 	"github.com/iotaledger/hive.go/marshalutil"
 	"github.com/iotaledger/hive.go/objectstorage"
 	"github.com/iotaledger/hive.go/types"
 	"golang.org/x/crypto/blake2b"
-
-	"github.com/iotaledger/goshimmer/packages/storageprefix"
 )
 
 // BranchManager is an entity that manages the branches of a UTXODAG. It offers methods to add, delete and modify
@@ -40,7 +39,7 @@ type BranchManager struct {
 
 // New is the constructor of the BranchManager.
 func New(store kvstore.KVStore) (branchManager *BranchManager) {
-	osFactory := objectstorage.NewFactory(store, storageprefix.ValueTransfers)
+	osFactory := objectstorage.NewFactory(store, database.PrefixValueTransfers)
 
 	branchManager = &BranchManager{
 		branchStorage:         osFactory.New(osBranch, BranchFromObjectStorage, osBranchOptions...),
diff --git a/dapps/valuetransfers/packages/tangle/tangle.go b/dapps/valuetransfers/packages/tangle/tangle.go
index e093463e..b36da574 100644
--- a/dapps/valuetransfers/packages/tangle/tangle.go
+++ b/dapps/valuetransfers/packages/tangle/tangle.go
@@ -6,6 +6,7 @@ import (
 	"fmt"
 	"math"
 
+	"github.com/iotaledger/goshimmer/packages/database"
 	"github.com/iotaledger/hive.go/async"
 	"github.com/iotaledger/hive.go/events"
 	"github.com/iotaledger/hive.go/kvstore"
@@ -18,7 +19,6 @@ import (
 	"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/branchmanager"
 	"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/payload"
 	"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/transaction"
-	"github.com/iotaledger/goshimmer/packages/storageprefix"
 )
 
 // Tangle represents the value tangle that consists out of value payloads.
@@ -43,7 +43,7 @@ type Tangle struct {
 
 // New is the constructor of a Tangle and creates a new Tangle object from the given details.
 func New(store kvstore.KVStore) (tangle *Tangle) {
-	osFactory := objectstorage.NewFactory(store, storageprefix.ValueTransfers)
+	osFactory := objectstorage.NewFactory(store, database.PrefixValueTransfers)
 
 	tangle = &Tangle{
 		branchManager: branchmanager.New(store),
diff --git a/packages/database/prefix.go b/packages/database/prefix.go
new file mode 100644
index 00000000..bb135db3
--- /dev/null
+++ b/packages/database/prefix.go
@@ -0,0 +1,12 @@
+package database
+
+const (
+	// PrefixAutoPeering defines the prefix of the autopeering db.
+	PrefixAutoPeering byte = iota
+	// PrefixHealth defines the prefix of the health db.
+	PrefixHealth
+	// PrefixMessageLayer defines the storage prefix for the message layer.
+	PrefixMessageLayer
+	// PrefixValueTransfers defines the storage prefix for value transfer.
+	PrefixValueTransfers
+)
diff --git a/packages/database/prefix/prefix.go b/packages/database/prefix/prefix.go
deleted file mode 100644
index 955428b6..00000000
--- a/packages/database/prefix/prefix.go
+++ /dev/null
@@ -1,18 +0,0 @@
-package prefix
-
-const (
-	// DBPrefixApprovers defines the prefix of the approvers db
-	DBPrefixApprovers byte = iota
-	// DBPrefixTransaction defines the prefix of the transaction db
-	DBPrefixTransaction
-	// DBPrefixBundle defines the prefix of the bundles db
-	DBPrefixBundle
-	// DBPrefixTransactionMetadata defines the prefix of the transaction metadata db
-	DBPrefixTransactionMetadata
-	// DBPrefixAddressTransactions defines the prefix of the address transactions db
-	DBPrefixAddressTransactions
-	// DBPrefixAutoPeering defines the prefix of the autopeering db.
-	DBPrefixAutoPeering
-	// DBPrefixHealth defines the prefix of the health db.
-	DBPrefixHealth
-)
diff --git a/packages/storageprefix/storageprefix.go b/packages/storageprefix/storageprefix.go
deleted file mode 100644
index f6f6fd62..00000000
--- a/packages/storageprefix/storageprefix.go
+++ /dev/null
@@ -1,13 +0,0 @@
-package storageprefix
-
-const (
-	// the following values are a list of prefixes defined as an enum
-	// package specific prefixes used for the objectstorage in the corresponding packages
-
-	_ byte = iota
-
-	// MessageLayer defines the storage prefix for the message layer
-	MessageLayer
-	// ValueTransfers defines the storage prefix for value transfer.
-	ValueTransfers
-)
diff --git a/packages/tangle/tangle.go b/packages/tangle/tangle.go
index 3ffca644..6fd24baf 100644
--- a/packages/tangle/tangle.go
+++ b/packages/tangle/tangle.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"time"
 
-	"github.com/iotaledger/goshimmer/packages/storageprefix"
+	"github.com/iotaledger/goshimmer/packages/database"
 	"github.com/iotaledger/hive.go/async"
 	"github.com/iotaledger/hive.go/kvstore"
 	"github.com/iotaledger/hive.go/objectstorage"
@@ -44,7 +44,7 @@ type Tangle struct {
 
 // New creates a new Tangle.
 func New(store kvstore.KVStore) (result *Tangle) {
-	osFactory := objectstorage.NewFactory(store, storageprefix.MessageLayer)
+	osFactory := objectstorage.NewFactory(store, database.PrefixMessageLayer)
 
 	result = &Tangle{
 		shutdown:               make(chan struct{}),
diff --git a/plugins/autopeering/local/local.go b/plugins/autopeering/local/local.go
index d3fbdf92..27da57e5 100644
--- a/plugins/autopeering/local/local.go
+++ b/plugins/autopeering/local/local.go
@@ -7,7 +7,7 @@ import (
 	"strings"
 	"sync"
 
-	"github.com/iotaledger/goshimmer/packages/database/prefix"
+	databasePkg "github.com/iotaledger/goshimmer/packages/database"
 	"github.com/iotaledger/goshimmer/plugins/config"
 	"github.com/iotaledger/goshimmer/plugins/database"
 	"github.com/iotaledger/hive.go/autopeering/peer"
@@ -70,7 +70,7 @@ func configureLocal() *peer.Local {
 		}
 		seed = append(seed, bytes)
 	}
-	peerDB, err := peer.NewDB(database.StoreRealm([]byte{prefix.DBPrefixAutoPeering}))
+	peerDB, err := peer.NewDB(database.StoreRealm([]byte{databasePkg.PrefixAutoPeering}))
 	if err != nil {
 		log.Fatalf("Error creating peer DB: %s", err)
 	}
diff --git a/plugins/database/health.go b/plugins/database/health.go
index af6a4770..9432ef79 100644
--- a/plugins/database/health.go
+++ b/plugins/database/health.go
@@ -4,7 +4,7 @@ import (
 	"errors"
 	"fmt"
 
-	"github.com/iotaledger/goshimmer/packages/database/prefix"
+	"github.com/iotaledger/goshimmer/packages/database"
 	"github.com/iotaledger/hive.go/kvstore"
 )
 
@@ -14,7 +14,7 @@ var (
 )
 
 func configureHealthStore(store kvstore.KVStore) {
-	healthStore = store.WithRealm([]byte{prefix.DBPrefixHealth})
+	healthStore = store.WithRealm([]byte{database.PrefixHealth})
 }
 
 // MarkDatabaseUnhealthy marks the database as not healthy, meaning
diff --git a/plugins/database/versioning.go b/plugins/database/versioning.go
index dc434ef0..219102af 100644
--- a/plugins/database/versioning.go
+++ b/plugins/database/versioning.go
@@ -10,7 +10,7 @@ import (
 const (
 	// DBVersion defines the version of the database schema this version of GoShimmer supports.
 	// Every time there's a breaking change regarding the stored data, this version flag should be adjusted.
-	DBVersion = 8
+	DBVersion = 9
 )
 
 var (
-- 
GitLab