@@ -14,13 +14,16 @@ import (
14
14
"github.com/lightninglabs/lightning-terminal/db/sqlc"
15
15
"github.com/lightningnetwork/lnd/clock"
16
16
"github.com/lightningnetwork/lnd/fn"
17
+ "github.com/lightningnetwork/lnd/sqldb/v2"
17
18
"gopkg.in/macaroon-bakery.v2/bakery"
18
19
"gopkg.in/macaroon.v2"
19
20
)
20
21
21
22
// SQLQueries is a subset of the sqlc.Queries interface that can be used to
22
23
// interact with session related tables.
23
24
type SQLQueries interface {
25
+ sqldb.BaseQuerier
26
+
24
27
GetAliasBySessionID (ctx context.Context , id int64 ) ([]byte , error )
25
28
GetSessionByID (ctx context.Context , id int64 ) (sqlc.Session , error )
26
29
GetSessionsInGroup (ctx context.Context , groupID sql.NullInt64 ) ([]sqlc.Session , error )
@@ -51,12 +54,13 @@ type SQLQueries interface {
51
54
52
55
var _ Store = (* SQLStore )(nil )
53
56
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.
56
60
type BatchedSQLQueries interface {
57
61
SQLQueries
58
62
59
- db .BatchedTx [SQLQueries ]
63
+ sqldb .BatchedTx [SQLQueries ]
60
64
}
61
65
62
66
// SQLStore represents a storage backend.
@@ -66,19 +70,37 @@ type SQLStore struct {
66
70
db BatchedSQLQueries
67
71
68
72
// BaseDB represents the underlying database connection.
69
- * db .BaseDB
73
+ * sqldb .BaseDB
70
74
71
75
clock clock.Clock
72
76
}
73
77
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 )
80
90
},
81
91
)
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 )
82
104
83
105
return & SQLStore {
84
106
db : executor ,
@@ -281,7 +303,7 @@ func (s *SQLStore) NewSession(ctx context.Context, label string, typ Type,
281
303
}
282
304
283
305
return nil
284
- })
306
+ }, sqldb . NoOpReset )
285
307
if err != nil {
286
308
mappedSQLErr := db .MapSQLError (err )
287
309
var uniqueConstraintErr * db.ErrSqlUniqueConstraintViolation
@@ -325,7 +347,7 @@ func (s *SQLStore) ListSessionsByType(ctx context.Context, t Type) ([]*Session,
325
347
}
326
348
327
349
return nil
328
- })
350
+ }, sqldb . NoOpReset )
329
351
330
352
return sessions , err
331
353
}
@@ -358,7 +380,7 @@ func (s *SQLStore) ListSessionsByState(ctx context.Context, state State) (
358
380
}
359
381
360
382
return nil
361
- })
383
+ }, sqldb . NoOpReset )
362
384
363
385
return sessions , err
364
386
}
@@ -417,7 +439,7 @@ func (s *SQLStore) ShiftState(ctx context.Context, alias ID, dest State) error {
417
439
State : int16 (dest ),
418
440
},
419
441
)
420
- })
442
+ }, sqldb . NoOpReset )
421
443
}
422
444
423
445
// DeleteReservedSessions deletes all sessions that are in the StateReserved
@@ -428,7 +450,7 @@ func (s *SQLStore) DeleteReservedSessions(ctx context.Context) error {
428
450
var writeTxOpts db.QueriesTxOptions
429
451
return s .db .ExecTx (ctx , & writeTxOpts , func (db SQLQueries ) error {
430
452
return db .DeleteSessionsWithState (ctx , int16 (StateReserved ))
431
- })
453
+ }, sqldb . NoOpReset )
432
454
}
433
455
434
456
// GetSessionByLocalPub fetches the session with the given local pub key.
@@ -458,7 +480,7 @@ func (s *SQLStore) GetSessionByLocalPub(ctx context.Context,
458
480
}
459
481
460
482
return nil
461
- })
483
+ }, sqldb . NoOpReset )
462
484
if err != nil {
463
485
return nil , err
464
486
}
@@ -491,7 +513,7 @@ func (s *SQLStore) ListAllSessions(ctx context.Context) ([]*Session, error) {
491
513
}
492
514
493
515
return nil
494
- })
516
+ }, sqldb . NoOpReset )
495
517
496
518
return sessions , err
497
519
}
@@ -521,7 +543,7 @@ func (s *SQLStore) UpdateSessionRemotePubKey(ctx context.Context, alias ID,
521
543
RemotePublicKey : remoteKey ,
522
544
},
523
545
)
524
- })
546
+ }, sqldb . NoOpReset )
525
547
}
526
548
527
549
// 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) {
576
598
}
577
599
578
600
return nil
579
- })
601
+ }, sqldb . NoOpReset )
580
602
581
603
return sess , err
582
604
}
@@ -617,7 +639,7 @@ func (s *SQLStore) GetGroupID(ctx context.Context, sessionID ID) (ID, error) {
617
639
legacyGroupID , err = IDFromBytes (legacyGroupIDB )
618
640
619
641
return err
620
- })
642
+ }, sqldb . NoOpReset )
621
643
if err != nil {
622
644
return ID {}, err
623
645
}
@@ -666,7 +688,7 @@ func (s *SQLStore) GetSessionIDs(ctx context.Context, legacyGroupID ID) ([]ID,
666
688
}
667
689
668
690
return nil
669
- })
691
+ }, sqldb . NoOpReset )
670
692
if err != nil {
671
693
return nil , err
672
694
}
0 commit comments