func (store *StoreWrapper) Query(expression string, options ...storage.QueryOption) (storage.Iterator, error) {
	start := time.Now()
	defer func() { store.m.DBQueryTime(store.dbType, time.Since(start)) }()
	return store.s.Query(expression, options...)
}
Query from db.
package wrapper
import (
	"time"
	"github.com/hyperledger/aries-framework-go/spi/storage"
	"github.com/trustbloc/orb/pkg/metrics"
)
type StoreWrapper struct {
	s      storage.Store
	m      metricsProvider
	dbType string
}
type metricsProvider interface {
	DBPutTime(dbType string, duration time.Duration)
	DBGetTime(dbType string, duration time.Duration)
	DBGetTagsTime(dbType string, duration time.Duration)
	DBGetBulkTime(dbType string, duration time.Duration)
	DBQueryTime(dbType string, duration time.Duration)
	DBDeleteTime(dbType string, duration time.Duration)
}
func NewStore(s storage.Store, dbType string) *StoreWrapper {
	return &StoreWrapper{s: s, m: metrics.Get(), dbType: dbType}
}
func (store *StoreWrapper) Put(key string, value []byte, tags ...storage.Tag) error {
	start := time.Now()
	defer func() { store.m.DBPutTime(store.dbType, time.Since(start)) }()
	return store.s.Put(key, value, tags...)
}
func (store *StoreWrapper) Get(key string) ([]byte, error) {
	start := time.Now()
	defer func() { store.m.DBGetTime(store.dbType, time.Since(start)) }()
	return store.s.Get(key)
}
func (store *StoreWrapper) GetTags(key string) ([]storage.Tag, error) {
	start := time.Now()
	defer func() { store.m.DBGetTagsTime(store.dbType, time.Since(start)) }()
	return store.s.GetTags(key)
}
func (store *StoreWrapper) GetBulk(keys ...string) ([][]byte, error) {
	start := time.Now()
	defer func() { store.m.DBGetBulkTime(store.dbType, time.Since(start)) }()
	return store.s.GetBulk(keys...)
}