Skip to content

Commit a81c39b

Browse files
Split store, store services and services
Signed-off-by: Alexandros Filios <alexandros.filios@ibm.com>
1 parent 9b30286 commit a81c39b

File tree

60 files changed

+596
-674
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+596
-674
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/gin-gonic/gin v1.10.0
1010
github.com/gobuffalo/packr/v2 v2.7.1
1111
github.com/hashicorp/go-uuid v1.0.3
12-
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250424121222-e841f27ce668
12+
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250425021007-e776389f5258
1313
github.com/hyperledger-labs/orion-sdk-go v0.2.10
1414
github.com/hyperledger-labs/orion-server v0.2.10
1515
github.com/hyperledger/fabric v1.4.0-rc1.0.20230405174026-695dd57e01c2

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,8 +1073,8 @@ github.com/hidal-go/hidalgo v0.0.0-20201109092204-05749a6d73df/go.mod h1:bPkrxDl
10731073
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
10741074
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
10751075
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
1076-
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250424121222-e841f27ce668 h1:5zO5dpimWtMMydDuCFZoIH1038umBgyNJrVmnL+AXyI=
1077-
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250424121222-e841f27ce668/go.mod h1:0uk7mRq5G1JTb0txPR2PL4TQZntcFZjhRpXZvmrajOs=
1076+
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250425021007-e776389f5258 h1:0qJtMFgVjml9MrTZ8u+6Xh5dYoIyIDVkQObIbftYEJs=
1077+
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250425021007-e776389f5258/go.mod h1:0uk7mRq5G1JTb0txPR2PL4TQZntcFZjhRpXZvmrajOs=
10781078
github.com/hyperledger-labs/orion-sdk-go v0.2.10 h1:lFgWgxyvngIhWnIqymYGBmtmq9D6uC5d0uLG9cbyh5s=
10791079
github.com/hyperledger-labs/orion-sdk-go v0.2.10/go.mod h1:iN2xZB964AqwVJwL+EnwPOs8z1EkMEbbIg/qYeC7gDY=
10801080
github.com/hyperledger-labs/orion-server v0.2.10 h1:G4zbQEL5Egk0Oj+TwHCZWdTOLDBHOjaAEvYOT4G7ozw=

integration/token/common/sdk/identity/provider.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ package identity
99
import (
1010
"github.com/hyperledger-labs/fabric-token-sdk/token"
1111
"github.com/hyperledger-labs/fabric-token-sdk/token/services/db/driver"
12-
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity"
12+
driver2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/driver"
1313
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/storage/kvs"
1414
)
1515

@@ -29,6 +29,6 @@ func (s *KVSStorageProvider) IdentityStore(tmsID token.TMSID) (driver.IdentitySt
2929
return kvs.NewIdentityStore(s.kvs, tmsID), nil
3030
}
3131

32-
func (s *KVSStorageProvider) Keystore() (identity.Keystore, error) {
32+
func (s *KVSStorageProvider) Keystore() (driver2.Keystore, error) {
3333
return s.kvs, nil
3434
}

integration/token/fungible/views/checks.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,7 @@ type PruneInvalidUnspentTokensView struct {
8282
func (p *PruneInvalidUnspentTokensView) Call(context view.Context) (interface{}, error) {
8383
tms := token.GetManagementService(context, token.WithTMSID(p.TMSID))
8484
assert.NotNil(tms, "cannot find tms [%s]", p.TMSID)
85-
tokensProvider, err := tokens.GetProvider(context)
86-
assert.NoError(err, "failed to get tokens provider")
87-
tokens, err := tokensProvider.Tokens(tms.ID())
85+
tokens, err := tokens.GetService(context, tms.ID())
8886
assert.NoError(err, "failed to get tokens for [%s]", p.TMSID)
8987

9088
return tokens.PruneInvalidUnspentTokens(context.Context())

integration/token/fungible/views/upgrade.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@ func (i *TokensUpgradeInitiatorView) Call(context view.Context) (interface{}, er
4949
w := tms.WalletManager().OwnerWallet(i.Wallet)
5050
assert.NotNil(w, "cannot find wallet [%s:%s]", i.TMSID, i.Wallet)
5151

52-
tokensProvider, err := tokens.GetProvider(context)
53-
assert.NoError(err, "failed getting tokens provider")
54-
tokens, err := tokensProvider.Tokens(tms.ID())
52+
tokens, err := tokens.GetService(context, tms.ID())
5553
assert.NoError(err, "failed getting tokens")
5654
assert.NotNil(tokens, "failed getting tokens")
5755
it, err := tokens.UnsupportedTokensIteratorBy(context.Context(), w.ID(), i.TokenType)

integration/token/fungible/views/utils.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,7 @@ func (s *SetSpendableFlagView) Call(context view.Context) (interface{}, error) {
108108
tms := token.GetManagementService(context, token.WithTMSID(s.TMSID))
109109
assert.NotNil(tms, "failed getting token management service [%s]", s.TMSID)
110110

111-
tokensProvider, err := tokens.GetProvider(context)
112-
assert.NoError(err, "failed getting tokens provider")
113-
114-
tokens, err := tokensProvider.Tokens(tms.ID())
111+
tokens, err := tokens.GetService(context, tms.ID())
115112
assert.NoError(err, "failed getting tokens")
116113

117114
err = tokens.SetSpendableFlag(s.Spendable, &s.TokenID)

token/sdk/db/checks.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func NewAuditorCheckServiceProvider(tmsProvider common.TokenManagementServicePro
3030
}
3131
}
3232

33-
func (a *AuditorCheckServiceProvider) CheckService(id token.TMSID, adb *auditdb.StoreService, tdb *tokens.Tokens) (auditor.CheckService, error) {
33+
func (a *AuditorCheckServiceProvider) CheckService(id token.TMSID, adb *auditdb.StoreService, tdb *tokens.Service) (auditor.CheckService, error) {
3434
return common.NewChecksService(append(common.NewDefaultCheckers(a.tmsProvider, a.networkProvider, adb, tdb, id), a.checkers...)), nil
3535
}
3636

@@ -48,6 +48,6 @@ func NewOwnerCheckServiceProvider(tmsProvider common.TokenManagementServiceProvi
4848
}
4949
}
5050

51-
func (a *OwnerCheckServiceProvider) CheckService(id token.TMSID, txdb *ttxdb.StoreService, tdb *tokens.Tokens) (ttx.CheckService, error) {
51+
func (a *OwnerCheckServiceProvider) CheckService(id token.TMSID, txdb *ttxdb.StoreService, tdb *tokens.Service) (ttx.CheckService, error) {
5252
return common.NewChecksService(append(common.NewDefaultCheckers(a.tmsProvider, a.networkProvider, txdb, tdb, id), a.checkers...)), nil
5353
}

token/sdk/dig/sdk.go

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ import (
3333
"github.com/hyperledger-labs/fabric-token-sdk/token/services/auditor"
3434
_ "github.com/hyperledger-labs/fabric-token-sdk/token/services/certifier/dummy"
3535
config2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/config"
36-
db2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/db"
3736
common2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/db/common"
3837
"github.com/hyperledger-labs/fabric-token-sdk/token/services/db/sql/memory"
3938
"github.com/hyperledger-labs/fabric-token-sdk/token/services/db/sql/postgres"
4039
"github.com/hyperledger-labs/fabric-token-sdk/token/services/db/sql/sqlite"
4140
identity2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/identity"
41+
driver4 "github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/driver"
4242
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identitydb"
4343
"github.com/hyperledger-labs/fabric-token-sdk/token/services/logging"
4444
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network"
@@ -52,6 +52,7 @@ import (
5252
"github.com/hyperledger-labs/fabric-token-sdk/token/services/tokens"
5353
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx"
5454
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttxdb"
55+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/walletdb"
5556
"github.com/pkg/errors"
5657
"go.opentelemetry.io/otel/trace"
5758
"go.uber.org/dig"
@@ -112,8 +113,8 @@ func (p *SDK) Install() error {
112113
p.Container().Provide(digutils.Identity[*core2.TMSProvider](), dig.As(new(driver2.TokenManagerServiceProvider))),
113114
p.Container().Provide(func(service driver.ConfigService) *config2.Service { return config2.NewService(service) }),
114115
p.Container().Provide(digutils.Identity[*config2.Service](), dig.As(new(core2.ConfigProvider))),
115-
p.Container().Provide(func(ttxdbManager *ttxdb.Manager) *network2.LockerProvider {
116-
return network2.NewLockerProvider(ttxdbManager, 2*time.Second, 5*time.Minute)
116+
p.Container().Provide(func(ttxStoreServiceManager ttxdb.StoreServiceManager) *network2.LockerProvider {
117+
return network2.NewLockerProvider(ttxStoreServiceManager, 2*time.Second, 5*time.Minute)
117118
}, dig.As(new(selector.LockerProvider))),
118119
p.Container().Provide(selectorProviders[sdriver.Driver(p.ConfigService().GetString("token.selector.driver"))], dig.As(new(token.SelectorManagerProvider))),
119120
p.Container().Provide(network2.NewCertificationClientProvider, dig.As(new(token.CertificationClientProvider))),
@@ -128,28 +129,28 @@ func (p *SDK) Install() error {
128129
new(common2.TokenManagementServiceProvider),
129130
),
130131
),
131-
p.Container().Provide(ttxdb.NewManager),
132-
p.Container().Provide(digutils.Identity[*ttxdb.Manager](), dig.As(new(ttx.DBProvider), new(network2.TTXDBProvider))),
133-
p.Container().Provide(tokendb.NewManager),
132+
p.Container().Provide(ttxdb.NewStoreServiceManager),
133+
p.Container().Provide(digutils.Identity[ttxdb.StoreServiceManager](), dig.As(new(ttx.StoreServiceManager))),
134+
p.Container().Provide(tokendb.NewStoreServiceManager),
134135
p.Container().Provide(tokendb.NewNotifierManager),
135-
p.Container().Provide(digutils.Identity[*tokendb.Manager](), dig.As(new(tokens.DBProvider))),
136-
p.Container().Provide(db2.NewDriverHolder),
136+
p.Container().Provide(digutils.Identity[tokendb.StoreServiceManager](), dig.As(new(tokens.StoreServiceManager))),
137137
p.Container().Provide(newMultiplexedDriver),
138-
p.Container().Provide(auditdb.NewManager),
139-
p.Container().Provide(digutils.Identity[*auditdb.Manager](), dig.As(new(auditor.AuditDBProvider))),
140-
p.Container().Provide(identitydb.NewManager),
141-
p.Container().Provide(tokenlockdb.NewManager),
142-
p.Container().Provide(digutils.Identity[*kvs.KVS](), dig.As(new(identity2.Keystore))),
138+
p.Container().Provide(auditdb.NewStoreServiceManager),
139+
p.Container().Provide(digutils.Identity[auditdb.StoreServiceManager](), dig.As(new(auditor.StoreServiceManager))),
140+
p.Container().Provide(identitydb.NewStoreServiceManager),
141+
p.Container().Provide(walletdb.NewStoreServiceManager),
142+
p.Container().Provide(tokenlockdb.NewStoreServiceManager),
143+
p.Container().Provide(digutils.Identity[*kvs.KVS](), dig.As(new(driver4.Keystore))),
143144
p.Container().Provide(identity.NewDBStorageProvider),
144145
p.Container().Provide(digutils.Identity[*identity.DBStorageProvider](), dig.As(new(identity2.StorageProvider))),
145146
p.Container().Provide(NewAuditorCheckServiceProvider),
146147
p.Container().Provide(digutils.Identity[*db.AuditorCheckServiceProvider](), dig.As(new(auditor.CheckServiceProvider))),
147-
p.Container().Provide(auditor.NewManager),
148+
p.Container().Provide(auditor.NewServiceManager),
148149
p.Container().Provide(NewOwnerCheckServiceProvider),
149150
p.Container().Provide(digutils.Identity[*db.OwnerCheckServiceProvider](), dig.As(new(ttx.CheckServiceProvider))),
150-
p.Container().Provide(ttx.NewManager),
151-
p.Container().Provide(tokens.NewManager),
152-
p.Container().Provide(digutils.Identity[*tokens.Manager](), dig.As(new(ttx.TokensProvider), new(auditor.TokenDBProvider))),
151+
p.Container().Provide(ttx.NewServiceManager),
152+
p.Container().Provide(tokens.NewServiceManager),
153+
p.Container().Provide(digutils.Identity[*tokens.ServiceManager](), dig.As(new(ttx.TokensServiceManager), new(auditor.TokensServiceManager))),
153154
p.Container().Provide(vault.NewVaultProvider),
154155
p.Container().Provide(digutils.Identity[*vault.Provider](), dig.As(new(token.VaultProvider))),
155156
p.Container().Provide(tms.NewPostInitializer),
@@ -158,8 +159,8 @@ func (p *SDK) Install() error {
158159
p.Container().Provide(sqlite.NewNamedDriver, dig.Group("token-db-drivers")),
159160
p.Container().Provide(postgres.NewNamedDriver, dig.Group("token-db-drivers")),
160161
p.Container().Provide(memory.NewNamedDriver, dig.Group("token-db-drivers")),
161-
p.Container().Provide(func(dbManager *tokendb.Manager, notifierManager *tokendb.NotifierManager, metricsProvider metrics.Provider) sherdlock.FetcherProvider {
162-
return sherdlock.NewFetcherProvider(dbManager, notifierManager, metricsProvider, sherdlock.Mixed)
162+
p.Container().Provide(func(tokenStoreServiceManager tokendb.StoreServiceManager, notifierManager tokendb.NotifierManager, metricsProvider metrics.Provider) sherdlock.FetcherProvider {
163+
return sherdlock.NewFetcherProvider(tokenStoreServiceManager, notifierManager, metricsProvider, sherdlock.Mixed)
163164
}),
164165
)
165166
if err != nil {
@@ -184,18 +185,18 @@ func (p *SDK) Install() error {
184185
digutils.Register[*core2.TokenDriverService](p.Container()),
185186
digutils.Register[*network.Provider](p.Container()),
186187
digutils.Register[*token.ManagementServiceProvider](p.Container()),
187-
digutils.Register[*ttxdb.Manager](p.Container()),
188-
digutils.Register[*tokendb.Manager](p.Container()),
189-
digutils.Register[*auditdb.Manager](p.Container()),
190-
digutils.Register[*identitydb.Manager](p.Container()),
188+
digutils.Register[ttxdb.StoreServiceManager](p.Container()),
189+
digutils.Register[tokendb.StoreServiceManager](p.Container()),
190+
digutils.Register[auditdb.StoreServiceManager](p.Container()),
191+
digutils.Register[identitydb.StoreServiceManager](p.Container()),
191192
digutils.Register[*vault.Provider](p.Container()),
192193
digutils.Register[driver.ConfigService](p.Container()),
193194
digutils.Register[*identity.DBStorageProvider](p.Container()),
194195
digutils.Register[*ttx.Metrics](p.Container()),
195-
digutils.Register[*auditor.Manager](p.Container()),
196+
digutils.Register[*auditor.ServiceManager](p.Container()),
196197
digutils.Register[*config2.Service](p.Container()),
197-
digutils.Register[*ttx.Manager](p.Container()),
198-
digutils.Register[*tokens.Manager](p.Container()),
198+
digutils.Register[*ttx.ServiceManager](p.Container()),
199+
digutils.Register[*tokens.ServiceManager](p.Container()),
199200
digutils.Register[trace.TracerProvider](p.Container()),
200201
digutils.Register[metrics.Provider](p.Container()),
201202
)

token/sdk/identity/provider.go

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,37 @@ package identity
88

99
import (
1010
"github.com/hyperledger-labs/fabric-token-sdk/token"
11-
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity"
1211
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/driver"
1312
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identitydb"
13+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/walletdb"
1414
)
1515

1616
type DBStorageProvider struct {
17-
kvs identity.Keystore
18-
manager *identitydb.Manager
17+
kvs driver.Keystore
18+
identityStoreServiceManager identitydb.StoreServiceManager
19+
walletStoreServiceManager walletdb.StoreServiceManager
1920
}
2021

21-
func NewDBStorageProvider(kvs identity.Keystore, manager *identitydb.Manager) *DBStorageProvider {
22-
return &DBStorageProvider{kvs: kvs, manager: manager}
22+
func NewDBStorageProvider(
23+
kvs driver.Keystore,
24+
identityStoreServiceManager identitydb.StoreServiceManager,
25+
walletStoreServiceManager walletdb.StoreServiceManager,
26+
) *DBStorageProvider {
27+
return &DBStorageProvider{
28+
kvs: kvs,
29+
identityStoreServiceManager: identityStoreServiceManager,
30+
walletStoreServiceManager: walletStoreServiceManager,
31+
}
2332
}
2433

25-
func (s *DBStorageProvider) WalletStore(tmsID token.TMSID) (driver.WalletStore, error) {
26-
return s.manager.WalletStoreByTMSId(tmsID)
34+
func (s *DBStorageProvider) WalletStore(tmsID token.TMSID) (driver.WalletStoreService, error) {
35+
return s.walletStoreServiceManager.StoreServiceByTMSId(tmsID)
2736
}
2837

29-
func (s *DBStorageProvider) IdentityStore(tmsID token.TMSID) (driver.IdentityStore, error) {
30-
return s.manager.IdentityStoreByTMSId(tmsID)
38+
func (s *DBStorageProvider) IdentityStore(tmsID token.TMSID) (driver.IdentityStoreService, error) {
39+
return s.identityStoreServiceManager.StoreServiceByTMSId(tmsID)
3140
}
3241

33-
func (s *DBStorageProvider) Keystore() (identity.Keystore, error) {
42+
func (s *DBStorageProvider) Keystore() (driver.Keystore, error) {
3443
return s.kvs, nil
3544
}

token/sdk/network/selector.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,32 @@ import (
1010
"time"
1111

1212
"github.com/hyperledger-labs/fabric-token-sdk/token"
13+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/db"
1314
selector "github.com/hyperledger-labs/fabric-token-sdk/token/services/selector/simple"
1415
"github.com/hyperledger-labs/fabric-token-sdk/token/services/selector/simple/inmemory"
1516
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttxdb"
1617
)
1718

18-
type TTXDBProvider interface {
19-
ServiceByTMSId(id token.TMSID) (*ttxdb.StoreService, error)
20-
}
21-
2219
type LockerProvider struct {
23-
ttxdbProvider TTXDBProvider
20+
ttxStoreServiceManager db.StoreServiceManager[*ttxdb.StoreService]
2421
sleepTimeout time.Duration
2522
validTxEvictionTimeout time.Duration
2623
}
2724

28-
func NewLockerProvider(ttxdbProvider TTXDBProvider, sleepTimeout time.Duration, validTxEvictionTimeout time.Duration) *LockerProvider {
25+
func NewLockerProvider(
26+
ttxStoreServiceManager db.StoreServiceManager[*ttxdb.StoreService],
27+
sleepTimeout time.Duration,
28+
validTxEvictionTimeout time.Duration,
29+
) *LockerProvider {
2930
return &LockerProvider{
30-
ttxdbProvider: ttxdbProvider,
31+
ttxStoreServiceManager: ttxStoreServiceManager,
3132
sleepTimeout: sleepTimeout,
3233
validTxEvictionTimeout: validTxEvictionTimeout,
3334
}
3435
}
3536

3637
func (s *LockerProvider) New(network, channel, namespace string) (selector.Locker, error) {
37-
db, err := s.ttxdbProvider.ServiceByTMSId(token.TMSID{
38+
db, err := s.ttxStoreServiceManager.StoreServiceByTMSId(token.TMSID{
3839
Network: network,
3940
Channel: channel,
4041
Namespace: namespace,

0 commit comments

Comments
 (0)