@@ -14,13 +14,16 @@ import (
1414 "github.com/lightninglabs/lightning-terminal/db/sqlc"
1515 "github.com/lightningnetwork/lnd/clock"
1616 "github.com/lightningnetwork/lnd/fn"
17+ "github.com/lightningnetwork/lnd/sqldb/v2"
1718 "gopkg.in/macaroon-bakery.v2/bakery"
1819 "gopkg.in/macaroon.v2"
1920)
2021
2122// SQLQueries is a subset of the sqlc.Queries interface that can be used to
2223// interact with session related tables.
2324type SQLQueries interface {
25+ sqldb.BaseQuerier
26+
2427 GetAliasBySessionID (ctx context.Context , id int64 ) ([]byte , error )
2528 GetSessionByID (ctx context.Context , id int64 ) (sqlc.Session , error )
2629 GetSessionsInGroup (ctx context.Context , groupID sql.NullInt64 ) ([]sqlc.Session , error )
@@ -51,12 +54,13 @@ type SQLQueries interface {
5154
5255var _ Store = (* SQLStore )(nil )
5356
54- // BatchedSQLQueries is a version of the SQLQueries that's capable of batched
55- // database operations.
57+ // BatchedSQLQueries combines the SQLQueries interface with the BatchedTx
58+ // interface, allowing for multiple queries to be executed in single SQL
59+ // transaction.
5660type BatchedSQLQueries interface {
5761 SQLQueries
5862
59- db .BatchedTx [SQLQueries ]
63+ sqldb .BatchedTx [SQLQueries ]
6064}
6165
6266// SQLStore represents a storage backend.
@@ -66,19 +70,37 @@ type SQLStore struct {
6670 db BatchedSQLQueries
6771
6872 // BaseDB represents the underlying database connection.
69- * db .BaseDB
73+ * sqldb .BaseDB
7074
7175 clock clock.Clock
7276}
7377
74- // NewSQLStore creates a new SQLStore instance given an open BatchedSQLQueries
75- // storage backend.
76- func NewSQLStore (sqlDB * db.BaseDB , clock clock.Clock ) * SQLStore {
77- executor := db .NewTransactionExecutor (
78- sqlDB , func (tx * sql.Tx ) SQLQueries {
79- return sqlDB .WithTx (tx )
78+ type SQLQueriesExecutor [T sqldb.BaseQuerier ] struct {
79+ * sqldb.TransactionExecutor [T ]
80+
81+ SQLQueries
82+ }
83+
84+ func NewSQLQueriesExecutor (baseDB * sqldb.BaseDB ,
85+ queries * sqlc.Queries ) * SQLQueriesExecutor [SQLQueries ] {
86+
87+ executor := sqldb .NewTransactionExecutor (
88+ baseDB , func (tx * sql.Tx ) SQLQueries {
89+ return queries .WithTx (tx )
8090 },
8191 )
92+ return & SQLQueriesExecutor [SQLQueries ]{
93+ TransactionExecutor : executor ,
94+ SQLQueries : queries ,
95+ }
96+ }
97+
98+ // NewSQLStore creates a new SQLStore instance given an open BatchedSQLQueries
99+ // storage backend.
100+ func NewSQLStore (sqlDB * sqldb.BaseDB , queries * sqlc.Queries ,
101+ clock clock.Clock ) * SQLStore {
102+
103+ executor := NewSQLQueriesExecutor (sqlDB , queries )
82104
83105 return & SQLStore {
84106 db : executor ,
@@ -281,7 +303,7 @@ func (s *SQLStore) NewSession(ctx context.Context, label string, typ Type,
281303 }
282304
283305 return nil
284- })
306+ }, sqldb . NoOpReset )
285307 if err != nil {
286308 mappedSQLErr := db .MapSQLError (err )
287309 var uniqueConstraintErr * db.ErrSqlUniqueConstraintViolation
@@ -325,7 +347,7 @@ func (s *SQLStore) ListSessionsByType(ctx context.Context, t Type) ([]*Session,
325347 }
326348
327349 return nil
328- })
350+ }, sqldb . NoOpReset )
329351
330352 return sessions , err
331353}
@@ -358,7 +380,7 @@ func (s *SQLStore) ListSessionsByState(ctx context.Context, state State) (
358380 }
359381
360382 return nil
361- })
383+ }, sqldb . NoOpReset )
362384
363385 return sessions , err
364386}
@@ -417,7 +439,7 @@ func (s *SQLStore) ShiftState(ctx context.Context, alias ID, dest State) error {
417439 State : int16 (dest ),
418440 },
419441 )
420- })
442+ }, sqldb . NoOpReset )
421443}
422444
423445// DeleteReservedSessions deletes all sessions that are in the StateReserved
@@ -428,7 +450,7 @@ func (s *SQLStore) DeleteReservedSessions(ctx context.Context) error {
428450 var writeTxOpts db.QueriesTxOptions
429451 return s .db .ExecTx (ctx , & writeTxOpts , func (db SQLQueries ) error {
430452 return db .DeleteSessionsWithState (ctx , int16 (StateReserved ))
431- })
453+ }, sqldb . NoOpReset )
432454}
433455
434456// GetSessionByLocalPub fetches the session with the given local pub key.
@@ -458,7 +480,7 @@ func (s *SQLStore) GetSessionByLocalPub(ctx context.Context,
458480 }
459481
460482 return nil
461- })
483+ }, sqldb . NoOpReset )
462484 if err != nil {
463485 return nil , err
464486 }
@@ -491,7 +513,7 @@ func (s *SQLStore) ListAllSessions(ctx context.Context) ([]*Session, error) {
491513 }
492514
493515 return nil
494- })
516+ }, sqldb . NoOpReset )
495517
496518 return sessions , err
497519}
@@ -521,7 +543,7 @@ func (s *SQLStore) UpdateSessionRemotePubKey(ctx context.Context, alias ID,
521543 RemotePublicKey : remoteKey ,
522544 },
523545 )
524- })
546+ }, sqldb . NoOpReset )
525547}
526548
527549// getSqlUnusedAliasAndKeyPair can be used to generate a new, unused, local
@@ -576,7 +598,7 @@ func (s *SQLStore) GetSession(ctx context.Context, alias ID) (*Session, error) {
576598 }
577599
578600 return nil
579- })
601+ }, sqldb . NoOpReset )
580602
581603 return sess , err
582604}
@@ -617,7 +639,7 @@ func (s *SQLStore) GetGroupID(ctx context.Context, sessionID ID) (ID, error) {
617639 legacyGroupID , err = IDFromBytes (legacyGroupIDB )
618640
619641 return err
620- })
642+ }, sqldb . NoOpReset )
621643 if err != nil {
622644 return ID {}, err
623645 }
@@ -666,7 +688,7 @@ func (s *SQLStore) GetSessionIDs(ctx context.Context, legacyGroupID ID) ([]ID,
666688 }
667689
668690 return nil
669- })
691+ }, sqldb . NoOpReset )
670692 if err != nil {
671693 return nil , err
672694 }
0 commit comments