@@ -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