Skip to content

Commit 9ace9ef

Browse files
Update FSC version
Signed-off-by: Alexandros Filios <alexandros.filios@ibm.com>
1 parent 9483416 commit 9ace9ef

File tree

22 files changed

+137
-163
lines changed

22 files changed

+137
-163
lines changed

go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ require (
1111
github.com/gin-gonic/gin v1.10.0
1212
github.com/gobuffalo/packr/v2 v2.7.1
1313
github.com/hashicorp/go-uuid v1.0.3
14-
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250515124101-a0f098af3c23
14+
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250520091924-8e22c13abd39
1515
github.com/hyperledger-labs/orion-sdk-go v0.2.10
1616
github.com/hyperledger-labs/orion-server v0.2.10
1717
github.com/hyperledger/fabric v1.4.0-rc1.0.20230405174026-695dd57e01c2
@@ -240,6 +240,7 @@ require (
240240
github.com/sykesm/zap-logfmt v0.0.4 // indirect
241241
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
242242
github.com/ugorji/go/codec v1.2.12 // indirect
243+
github.com/uptrace/opentelemetry-go-extra/otelsql v0.3.2 // indirect
243244
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect
244245
github.com/wlynxg/anet v0.0.5 // indirect
245246
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect

go.sum

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
632632
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
633633
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
634634
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
635+
github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU=
636+
github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU=
635637
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 h1:3c8yed4lgqTt+oTQ+JNMDo+F4xprBf+O/il4ZC0nRLw=
636638
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0/go.mod h1:obipzmGjfSjam60XLwGfqUkJsfiheAl+TUjG+4yzyPM=
637639
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s=
@@ -1073,8 +1075,8 @@ github.com/hidal-go/hidalgo v0.0.0-20201109092204-05749a6d73df/go.mod h1:bPkrxDl
10731075
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
10741076
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
10751077
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
1076-
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250515124101-a0f098af3c23 h1:TGonLJ8NSYcgfj+R7Xh6Y9EA2zFCOReeyB1G2Cw8vtA=
1077-
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250515124101-a0f098af3c23/go.mod h1:et7s8vFkdVp6kz6rrqU+DYgQbsJZO+L1j2bkOeMpMYk=
1078+
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250520091924-8e22c13abd39 h1:WsxFZLRKeHVP/b8M6TfNUGdnVuUImX/8kFXiAJDLDHs=
1079+
github.com/hyperledger-labs/fabric-smart-client v0.4.1-0.20250520091924-8e22c13abd39/go.mod h1:HV4I55q8VuXE8QiAyPnM+bLKHS7LVEOMhpK2oL/EY0w=
10781080
github.com/hyperledger-labs/orion-sdk-go v0.2.10 h1:lFgWgxyvngIhWnIqymYGBmtmq9D6uC5d0uLG9cbyh5s=
10791081
github.com/hyperledger-labs/orion-sdk-go v0.2.10/go.mod h1:iN2xZB964AqwVJwL+EnwPOs8z1EkMEbbIg/qYeC7gDY=
10801082
github.com/hyperledger-labs/orion-server v0.2.10 h1:G4zbQEL5Egk0Oj+TwHCZWdTOLDBHOjaAEvYOT4G7ozw=
@@ -1564,6 +1566,8 @@ github.com/tylertreat/BoomFilters v0.0.0-20181028192813-611b3dbe80e8/go.mod h1:O
15641566
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
15651567
github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
15661568
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
1569+
github.com/uptrace/opentelemetry-go-extra/otelsql v0.3.2 h1:ZjUj9BLYf9PEqBn8W/OapxhPjVRdC6CsXTdULHsyk5c=
1570+
github.com/uptrace/opentelemetry-go-extra/otelsql v0.3.2/go.mod h1:O8bHQfyinKwTXKkiKNGmLQS7vRsqRxIQTFZpYpHK3IQ=
15671571
github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
15681572
github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
15691573
github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU=

token/services/db/sql/common/identity.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func newIdentityStore(readDB, writeDB *sql.DB, tables identityTables, singerInfo
6363
}
6464
}
6565

66-
func NewCachedIdentityStore(readDB, writeDB *sql.DB, tables tableNames, ci common3.CondInterpreter) (*IdentityStore, error) {
66+
func NewCachedIdentityStore(readDB, writeDB *sql.DB, tables TableNames, ci common3.CondInterpreter) (*IdentityStore, error) {
6767
return NewIdentityStore(
6868
readDB,
6969
writeDB,
@@ -74,7 +74,7 @@ func NewCachedIdentityStore(readDB, writeDB *sql.DB, tables tableNames, ci commo
7474
)
7575
}
7676

77-
func NewIdentityStore(readDB, writeDB *sql.DB, tables tableNames, signerInfoCache cache[bool], auditInfoCache cache[[]byte], ci common3.CondInterpreter) (*IdentityStore, error) {
77+
func NewIdentityStore(readDB, writeDB *sql.DB, tables TableNames, signerInfoCache cache[bool], auditInfoCache cache[[]byte], ci common3.CondInterpreter) (*IdentityStore, error) {
7878
return newIdentityStore(
7979
readDB,
8080
writeDB,

token/services/db/sql/common/init.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ SPDX-License-Identifier: Apache-2.0
77
package common
88

99
import (
10+
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/common"
1011
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/storage/db"
1112
"github.com/hyperledger-labs/fabric-token-sdk/token/services/logging"
1213
)
@@ -15,7 +16,7 @@ var logger = logging.MustGetLogger("token-sdk.sql")
1516

1617
var ncProvider = db.NewTableNameCreator("fsc")
1718

18-
type tableNames struct {
19+
type TableNames struct {
1920
Movements string
2021
Transactions string
2122
Requests string
@@ -32,13 +33,15 @@ type tableNames struct {
3233
TokenLocks string
3334
}
3435

35-
func GetTableNames(prefix string, params ...string) (tableNames, error) {
36+
type PersistenceConstructor[V common.DBObject] func(*common.RWDB, TableNames) (V, error)
37+
38+
func GetTableNames(prefix string, params ...string) (TableNames, error) {
3639
nc, err := ncProvider.GetFormatter(prefix)
3740
if err != nil {
38-
return tableNames{}, err
41+
return TableNames{}, err
3942
}
4043

41-
return tableNames{
44+
return TableNames{
4245
Movements: nc.MustFormat("movements", params...),
4346
Transactions: nc.MustFormat("txs", params...),
4447
TransactionEndorseAck: nc.MustFormat("tx_ends", params...),

token/services/db/sql/common/init_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
func TestGetTableNames(t *testing.T) {
1919
names, err := GetTableNames("")
2020
assert.NoError(t, err)
21-
assert.Equal(t, tableNames{
21+
assert.Equal(t, TableNames{
2222
Movements: "fsc_movements",
2323
Transactions: "fsc_txs",
2424
Requests: "fsc_requests",
@@ -64,7 +64,7 @@ func TestGetTableNames(t *testing.T) {
6464
t.Run(fmt.Sprintf("Prefix: %s", inv), func(t *testing.T) {
6565
names, err := GetTableNames(inv)
6666
assert.Error(t, err)
67-
assert.Equal(t, tableNames{}, names)
67+
assert.Equal(t, TableNames{}, names)
6868
})
6969
}
7070
}

token/services/db/sql/common/tokenlock.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func newTokenLockStore(readDB, writeDB *sql.DB, tables tokenLockTables) *TokenLo
4040
}
4141
}
4242

43-
func NewTokenLockStore(readDB, writeDB *sql.DB, tables tableNames) (*TokenLockStore, error) {
43+
func NewTokenLockStore(readDB, writeDB *sql.DB, tables TableNames) (*TokenLockStore, error) {
4444
return newTokenLockStore(
4545
readDB,
4646
writeDB,

token/services/db/sql/common/tokens.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ type tokenTables struct {
3939
Certifications string
4040
}
4141

42-
func NewTokenStore(readDB, writeDB *sql.DB, tables tableNames, ci common3.CondInterpreter) (*TokenStore, error) {
42+
func NewTokenStore(readDB, writeDB *sql.DB, tables TableNames, ci common3.CondInterpreter) (*TokenStore, error) {
4343
return newTokenStore(readDB, writeDB, tokenTables{
4444
Tokens: tables.Tokens,
4545
Ownership: tables.Ownership,

token/services/db/sql/common/transactions.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ func newTransactionStore(readDB, writeDB *sql.DB, tables transactionTables, ci c
5656
}
5757
}
5858

59-
func NewAuditTransactionStore(readDB, writeDB *sql.DB, tables tableNames, ci common3.CondInterpreter, pi common3.PagInterpreter) (*TransactionStore, error) {
59+
func NewAuditTransactionStore(readDB, writeDB *sql.DB, tables TableNames, ci common3.CondInterpreter, pi common3.PagInterpreter) (*TransactionStore, error) {
6060
return NewOwnerTransactionStore(readDB, writeDB, tables, ci, pi)
6161
}
6262

63-
func NewOwnerTransactionStore(readDB, writeDB *sql.DB, tables tableNames, ci common3.CondInterpreter, pi common3.PagInterpreter) (*TransactionStore, error) {
63+
func NewOwnerTransactionStore(readDB, writeDB *sql.DB, tables TableNames, ci common3.CondInterpreter, pi common3.PagInterpreter) (*TransactionStore, error) {
6464
return newTransactionStore(readDB, writeDB, transactionTables{
6565
Movements: tables.Movements,
6666
Transactions: tables.Transactions,

token/services/db/sql/common/wallet.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func newWalletStore(readDB, writeDB *sql.DB, tables walletTables) *WalletStore {
3636
}
3737
}
3838

39-
func NewWalletStore(readDB, writeDB *sql.DB, tables tableNames) (*WalletStore, error) {
39+
func NewWalletStore(readDB, writeDB *sql.DB, tables TableNames) (*WalletStore, error) {
4040
return newWalletStore(readDB, writeDB, walletTables{Wallets: tables.Wallets}), nil
4141
}
4242

token/services/db/sql/postgres/driver.go

Lines changed: 58 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/common"
1616
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver/sql/postgres"
1717
"github.com/hyperledger-labs/fabric-token-sdk/token/services/db/driver"
18+
common3 "github.com/hyperledger-labs/fabric-token-sdk/token/services/db/sql/common"
1819
)
1920

2021
type configProvider interface {
@@ -41,16 +42,20 @@ func NewNamedDriver(config driver.Config) driver.NamedDriver {
4142
}
4243

4344
func NewDriver(config driver.Config) *Driver {
45+
return NewDriverWithDbProvider(config, postgres.NewDbProvider())
46+
}
47+
48+
func NewDriverWithDbProvider(config driver.Config, dbProvider postgres.DbProvider) *Driver {
4449
return &Driver{
4550
cp: postgres.NewConfigProvider(common.NewConfig(config)),
4651

47-
TokenLock: newProviderWithKeyMapper(NewTokenLockStore),
48-
Wallet: newProviderWithKeyMapper(NewWalletStore),
49-
Identity: newProviderWithKeyMapper(NewIdentityStore),
50-
Token: newProviderWithKeyMapper(NewTokenStore),
51-
TokenNotifier: newProviderWithKeyMapper(NewTokenNotifier),
52-
AuditTx: newProviderWithKeyMapper(NewAuditTransactionStore),
53-
OwnerTx: newProviderWithKeyMapper(NewTransactionStore),
52+
TokenLock: newProviderWithKeyMapper(dbProvider, NewTokenLockStore),
53+
Wallet: newProviderWithKeyMapper(dbProvider, NewWalletStore),
54+
Identity: newProviderWithKeyMapper(dbProvider, NewIdentityStore),
55+
Token: newProviderWithKeyMapper(dbProvider, NewTokenStore),
56+
TokenNotifier: newTokenNotifierProvider(dbProvider),
57+
AuditTx: newProviderWithKeyMapper(dbProvider, NewAuditTransactionStore),
58+
OwnerTx: newProviderWithKeyMapper(dbProvider, NewTransactionStore),
5459
}
5560
}
5661

@@ -95,7 +100,7 @@ func (d *Driver) NewTokenNotifier(name driver2.PersistenceName, params ...string
95100
}
96101

97102
func (d *Driver) NewAuditTransaction(name driver2.PersistenceName, params ...string) (driver.AuditTransactionStore, error) {
98-
opts, err := d.cp.GetOpts(name, params...)
103+
opts, err := d.cp.GetOpts(name, append(params, "aud")...)
99104
if err != nil {
100105
return nil, err
101106
}
@@ -110,16 +115,26 @@ func (d *Driver) NewOwnerTransaction(name driver2.PersistenceName, params ...str
110115
return d.OwnerTx.Get(*opts)
111116
}
112117

113-
func newProviderWithKeyMapper[V common.DBObject](constructor common.PersistenceConstructor[postgres.Opts, V]) lazy.Provider[postgres.Config, V] {
118+
func newProviderWithKeyMapper[V common.DBObject](dbProvider postgres.DbProvider, constructor common3.PersistenceConstructor[V]) lazy.Provider[postgres.Config, V] {
114119
return lazy.NewProviderWithKeyMapper(key, func(o postgres.Config) (V, error) {
115-
p, err := constructor(postgres.Opts{
120+
opts := postgres.Opts{
116121
DataSource: o.DataSource,
117122
MaxOpenConns: o.MaxOpenConns,
118123
MaxIdleConns: *o.MaxIdleConns,
119124
MaxIdleTime: *o.MaxIdleTime,
120125
TablePrefix: o.TablePrefix,
121126
TableNameParams: o.TableNameParams,
122-
})
127+
Tracing: o.Tracing,
128+
}
129+
dbs, err := dbProvider.Get(opts)
130+
if err != nil {
131+
return utils.Zero[V](), err
132+
}
133+
tableNames, err := common3.GetTableNames(o.TablePrefix, o.TableNameParams...)
134+
if err != nil {
135+
return utils.Zero[V](), err
136+
}
137+
p, err := constructor(dbs, tableNames)
123138
if err != nil {
124139
return utils.Zero[V](), err
125140
}
@@ -132,6 +147,38 @@ func newProviderWithKeyMapper[V common.DBObject](constructor common.PersistenceC
132147
})
133148
}
134149

150+
func newTokenNotifierProvider(dbProvider postgres.DbProvider) lazy.Provider[postgres.Config, *TokenNotifier] {
151+
return lazy.NewProviderWithKeyMapper(key, func(o postgres.Config) (*TokenNotifier, error) {
152+
opts := postgres.Opts{
153+
DataSource: o.DataSource,
154+
MaxOpenConns: o.MaxOpenConns,
155+
MaxIdleConns: *o.MaxIdleConns,
156+
MaxIdleTime: *o.MaxIdleTime,
157+
TablePrefix: o.TablePrefix,
158+
TableNameParams: o.TableNameParams,
159+
Tracing: o.Tracing,
160+
}
161+
dbs, err := dbProvider.Get(opts)
162+
if err != nil {
163+
return nil, err
164+
}
165+
tableNames, err := common3.GetTableNames(o.TablePrefix, o.TableNameParams...)
166+
if err != nil {
167+
return nil, err
168+
}
169+
p, err := NewTokenNotifier(dbs, tableNames, o.DataSource)
170+
if err != nil {
171+
return nil, err
172+
}
173+
if !o.SkipCreateTable {
174+
if err := p.CreateSchema(); err != nil {
175+
return nil, err
176+
}
177+
}
178+
return p, nil
179+
})
180+
}
181+
135182
func key(k postgres.Config) string {
136183
return "postgres" + k.DataSource + k.TablePrefix + strings.Join(k.TableNameParams, "_")
137184
}

0 commit comments

Comments
 (0)