@@ -8,62 +8,30 @@ package common
88
99import (
1010 "database/sql"
11- "fmt"
1211
1312 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/db/driver"
14- "github.com/pkg/errors"
1513)
1614
1715func NewEndorseTxPersistence (writeDB * sql.DB , readDB * sql.DB , table string , errorWrapper driver.SQLErrorWrapper , ci Interpreter ) * EndorseTxPersistence {
18- return & EndorseTxPersistence {
19- table : table ,
20- errorWrapper : errorWrapper ,
21- readDB : readDB ,
22- writeDB : writeDB ,
23- ci : ci ,
24- }
16+ return & EndorseTxPersistence {p : newSimpleKeyDataPersistence (writeDB , readDB , table , errorWrapper , ci )}
2517}
2618
2719type EndorseTxPersistence struct {
28- table string
29- errorWrapper driver.SQLErrorWrapper
30- readDB * sql.DB
31- writeDB * sql.DB
32- ci Interpreter
20+ p * simpleKeyDataPersistence
3321}
3422
3523func (db * EndorseTxPersistence ) GetEndorseTx (key string ) ([]byte , error ) {
36- where , params := Where (db .ci .Cmp ("key" , "=" , key ))
37- query := fmt .Sprintf ("SELECT data FROM %s %s" , db .table , where )
38- logger .Debug (query , params )
39-
40- return QueryUnique [[]byte ](db .readDB , query , params ... )
24+ return db .p .GetData (key )
4125}
4226
4327func (db * EndorseTxPersistence ) ExistsEndorseTx (key string ) (bool , error ) {
44- data , err := db .GetEndorseTx (key )
45- return len (data ) > 0 , err
28+ return db .p .ExistData (key )
4629}
4730
48- func (db * EndorseTxPersistence ) PutEndorseTx (key string , etx []byte ) error {
49- query := fmt .Sprintf ("INSERT INTO %s (key, data) VALUES ($1, $2)" , db .table )
50- logger .Debugf (query , key , len (etx ))
51- _ , err := db .writeDB .Exec (query , key , etx )
52- if err != nil && errors .Is (db .errorWrapper .WrapError (err ), driver .UniqueKeyViolation ) {
53- logger .Warnf ("Endorse TX [%s] already in db. Skipping..." , key )
54- return nil
55- }
56- if err != nil {
57- return errors .Wrapf (err , "failed executing query [%s]" , query )
58- }
59- logger .Debugf ("Endorse TX [%s] registered" , key )
60- return nil
31+ func (db * EndorseTxPersistence ) PutEndorseTx (key string , data []byte ) error {
32+ return db .p .PutData (key , data )
6133}
6234
6335func (db * EndorseTxPersistence ) CreateSchema () error {
64- return InitSchema (db .writeDB , fmt .Sprintf (`
65- CREATE TABLE IF NOT EXISTS %s (
66- key TEXT NOT NULL PRIMARY KEY,
67- data BYTEA NOT NULL
68- );` , db .table ))
36+ return db .p .CreateSchema ()
6937}
0 commit comments