diff --git a/cmd/aries-js-worker/README.md b/cmd/aries-js-worker/README.md
index 167d09139..2d988f864 100644
--- a/cmd/aries-js-worker/README.md
+++ b/cmd/aries-js-worker/README.md
@@ -141,7 +141,8 @@ const aries = await new Framework({
"auto-accept": true,
"outbound-transport": ["ws", "http"],
"transport-return-route": "all",
- "log-level": "debug"
+ "log-level": "debug",
+ "db-path":"demoagent"
})
```
diff --git a/cmd/aries-js-worker/index.html b/cmd/aries-js-worker/index.html
index 689b9c0ac..0b16f24d6 100644
--- a/cmd/aries-js-worker/index.html
+++ b/cmd/aries-js-worker/index.html
@@ -108,7 +108,7 @@
if (src == "rest"){
document.getElementById("opts").innerHTML = `{"assetsPath": "/dist/assets", "agent-rest-url": "http://localhost:8082", "agent-rest-wshook":"ws://localhost:8082/ws", "agent-rest-token":"arjswrkr001"}`
} else {
- document.getElementById("opts").innerHTML = `{"assetsPath": "/dist/assets", "agent-default-label":"dem-js-agent","http-resolver-url":[],"auto-accept":true,"outbound-transport":["ws","http"],"transport-return-route":"all","log-level":"debug"}`
+ document.getElementById("opts").innerHTML = `{"assetsPath": "/dist/assets", "agent-default-label":"dem-js-agent","http-resolver-url":[],"auto-accept":true,"outbound-transport":["ws","http"],"transport-return-route":"all","log-level":"debug", "db-path":"demoagent"}`
}
}
@@ -133,7 +133,7 @@
Start Options :
- |
diff --git a/cmd/aries-js-worker/main.go b/cmd/aries-js-worker/main.go
index f965751bc..b79c5b5c4 100644
--- a/cmd/aries-js-worker/main.go
+++ b/cmd/aries-js-worker/main.go
@@ -28,6 +28,7 @@ import (
arieshttp "github.com/hyperledger/aries-framework-go/pkg/didcomm/transport/http"
"github.com/hyperledger/aries-framework-go/pkg/didcomm/transport/ws"
"github.com/hyperledger/aries-framework-go/pkg/framework/aries"
+ "github.com/hyperledger/aries-framework-go/pkg/framework/aries/defaults"
"github.com/hyperledger/aries-framework-go/pkg/vdri/httpbinding"
)
@@ -71,6 +72,7 @@ type ariesStartOpts struct {
OutboundTransport []string `json:"outbound-transport"`
TransportReturnRoute string `json:"transport-return-route"`
LogLevel string `json:"log-level"`
+ DBPath string `json:"db-path"`
}
// main registers the 'handleMsg' function in the JS context's global scope to receive commands.
@@ -350,6 +352,10 @@ func ariesOpts(opts *ariesStartOpts) ([]aries.Option, error) {
options = append(options, aries.WithTransportReturnRoute(opts.TransportReturnRoute))
}
+ if opts.DBPath != "" {
+ options = append(options, defaults.WithStorePath(opts.DBPath))
+ }
+
for _, transport := range opts.OutboundTransport {
switch transport {
case "http":
diff --git a/pkg/framework/aries/default_js_wasm.go b/pkg/framework/aries/default_js_wasm.go
index 5e10ed89b..ef184d84d 100644
--- a/pkg/framework/aries/default_js_wasm.go
+++ b/pkg/framework/aries/default_js_wasm.go
@@ -14,7 +14,7 @@ import (
)
func storeProvider() (storage.Provider, error) {
- storeProv, err := jsindexeddb.NewProvider()
+ storeProv, err := jsindexeddb.NewProvider("")
if err != nil {
return nil, fmt.Errorf("js indexeddb provider initialization failed : %w", err)
}
@@ -23,7 +23,7 @@ func storeProvider() (storage.Provider, error) {
}
func transientStoreProvider() (storage.Provider, error) {
- storeProv, err := jsindexeddb.NewProvider()
+ storeProv, err := jsindexeddb.NewProvider("")
if err != nil {
return nil, fmt.Errorf("js indexeddb provider initialization failed : %w", err)
}
diff --git a/pkg/framework/aries/defaults/defaults_js_wasm.go b/pkg/framework/aries/defaults/defaults_js_wasm.go
index 88c933124..1d657bb48 100644
--- a/pkg/framework/aries/defaults/defaults_js_wasm.go
+++ b/pkg/framework/aries/defaults/defaults_js_wasm.go
@@ -14,7 +14,7 @@ import (
// WithStorePath return new default store provider instantiate with db path
func WithStorePath(storePath string) aries.Option {
return func(opts *aries.Aries) error {
- store, err := jsindexeddb.NewProvider()
+ store, err := jsindexeddb.NewProvider(storePath)
if err != nil {
return err
}
diff --git a/pkg/storage/jsindexeddb/jsindexeddb.go b/pkg/storage/jsindexeddb/jsindexeddb.go
index e499861e7..7c4399244 100644
--- a/pkg/storage/jsindexeddb/jsindexeddb.go
+++ b/pkg/storage/jsindexeddb/jsindexeddb.go
@@ -27,8 +27,8 @@ import (
)
const (
- dbName = "aries"
- newdbName = "aries-%s"
+ dbName = "aries-%s"
+ defDbName = "aries"
)
var dbVersion = 1 //nolint:gochecknoglobals
@@ -41,10 +41,15 @@ type Provider struct {
// NewProvider instantiates Provider
// TODO Add unit test for IndexedDB https://github.com/hyperledger/aries-framework-go/issues/834
-func NewProvider() (*Provider, error) {
+func NewProvider(dbName string) (*Provider, error) {
p := &Provider{stores: make(map[string]*js.Value)}
- err := p.openDB(dbName, getStoreNames()...)
+ db := defDbName
+ if dbName != "" {
+ db = fmt.Sprintf(dbName, db)
+ }
+
+ err := p.openDB(db, getStoreNames()...)
if err != nil {
return nil, fmt.Errorf("failed to open IndexDB : %w", err)
}
@@ -71,7 +76,7 @@ func (p *Provider) OpenStore(name string) (storage.Store, error) {
defer p.Unlock()
// create new if not found in list of object stores (not the predefined ones)
- err := p.openDB(fmt.Sprintf(newdbName, name), name)
+ err := p.openDB(fmt.Sprintf(dbName, name), name)
if err != nil {
return nil, err
}
diff --git a/pkg/storage/jsindexeddb/jsindexeddb_test.go b/pkg/storage/jsindexeddb/jsindexeddb_test.go
index dc9af4e17..fbd7332fc 100644
--- a/pkg/storage/jsindexeddb/jsindexeddb_test.go
+++ b/pkg/storage/jsindexeddb/jsindexeddb_test.go
@@ -18,9 +18,24 @@ import (
"github.com/hyperledger/aries-framework-go/pkg/storage"
)
+const sampleDBName = "testdb"
+
+func TestProvider(t *testing.T) {
+ t.Run("Test provider with empty db name", func(t *testing.T) {
+ prov, err := NewProvider("")
+ require.NoError(t, err)
+ require.NotNil(t, prov)
+ })
+ t.Run("Test provider with db name", func(t *testing.T) {
+ prov, err := NewProvider(sampleDBName)
+ require.NoError(t, err)
+ require.NotNil(t, prov)
+ })
+}
+
func TestStore(t *testing.T) {
t.Run("Test store put and get", func(t *testing.T) {
- prov, err := NewProvider()
+ prov, err := NewProvider(sampleDBName)
require.NoError(t, err)
store, err := prov.OpenStore("test")
require.NoError(t, err)
@@ -61,7 +76,7 @@ func TestStore(t *testing.T) {
})
t.Run("Test error from open db", func(t *testing.T) {
- prov, err := NewProvider()
+ prov, err := NewProvider(sampleDBName)
require.NoError(t, err)
dbVersion = 3
@@ -78,7 +93,7 @@ func TestStore(t *testing.T) {
})
t.Run("Test store iterator", func(t *testing.T) {
- prov, err := NewProvider()
+ prov, err := NewProvider(sampleDBName)
require.NoError(t, err)
store, err := prov.OpenStore("test-iterator")
require.NoError(t, err)
@@ -127,7 +142,7 @@ func verifyItr(t *testing.T, itr storage.StoreIterator, count int, prefix string
}
func TestIndexDBStoreDelete(t *testing.T) {
- prov, err := NewProvider()
+ prov, err := NewProvider("sampledb")
require.NoError(t, err)
const commonKey = "did:example:1"