@@ -216,14 +216,14 @@ type LightningTerminal struct {
216216 middleware * mid.Manager
217217 middlewareStarted bool
218218
219- accountsStore accounts.Store
220219 accountService * accounts.InterceptorService
221220 accountServiceStarted bool
222221
223222 accountRpcServer * accounts.RPCServer
224223
224+ stores * stores
225+
225226 firewallDB * firewalldb.DB
226- sessionDB * session.BoltStore
227227
228228 restHandler http.Handler
229229 restCancel func ()
@@ -236,6 +236,15 @@ func New() *LightningTerminal {
236236 }
237237}
238238
239+ // stores holds a collection of the DB stores that are used by LiT.
240+ type stores struct {
241+ accounts accounts.Store
242+ sessions session.Store
243+
244+ // close is a callback that can be used to close all the stores in the
245+ close func () error
246+ }
247+
239248// Run starts everything and then blocks until either the application is shut
240249// down or a critical error happens.
241250func (g * LightningTerminal ) Run (ctx context.Context ) error {
@@ -421,14 +430,13 @@ func (g *LightningTerminal) start(ctx context.Context) error {
421430 return fmt .Errorf ("could not create network directory: %v" , err )
422431 }
423432
424- clock := clock .NewDefaultClock ()
425- g .accountsStore , err = NewAccountStore (g .cfg , clock )
433+ g .stores , err = NewStores (g .cfg , clock .NewDefaultClock ())
426434 if err != nil {
427- return fmt .Errorf ("error creating accounts store : %w " , err )
435+ return fmt .Errorf ("could not create stores : %v " , err )
428436 }
429437
430438 g .accountService , err = accounts .NewService (
431- g .accountsStore , accountServiceErrCallback ,
439+ g .stores . accounts , accountServiceErrCallback ,
432440 )
433441 if err != nil {
434442 return fmt .Errorf ("error creating account service: %v" , err )
@@ -448,16 +456,8 @@ func (g *LightningTerminal) start(ctx context.Context) error {
448456
449457 g .ruleMgrs = rules .NewRuleManagerSet ()
450458
451- // Create an instance of the local Terminal Connect session store DB.
452- g .sessionDB , err = session .NewDB (
453- networkDir , session .DBFilename , clock , g .accountsStore ,
454- )
455- if err != nil {
456- return fmt .Errorf ("error creating session DB: %v" , err )
457- }
458-
459459 g .firewallDB , err = firewalldb .NewDB (
460- networkDir , firewalldb .DBFilename , g .sessionDB ,
460+ networkDir , firewalldb .DBFilename , g .stores . sessions ,
461461 )
462462 if err != nil {
463463 return fmt .Errorf ("error creating firewall DB: %v" , err )
@@ -493,7 +493,7 @@ func (g *LightningTerminal) start(ctx context.Context) error {
493493 }
494494
495495 g .sessionRpcServer , err = newSessionRPCServer (& sessionRpcServerConfig {
496- db : g .sessionDB ,
496+ db : g .stores . sessions ,
497497 basicAuth : g .rpcProxy .basicAuth ,
498498 grpcOptions : []grpc.ServerOption {
499499 grpc .CustomCodec (grpcProxy .Codec ()), // nolint: staticcheck,
@@ -1086,7 +1086,7 @@ func (g *LightningTerminal) startInternalSubServers(ctx context.Context,
10861086
10871087 privacyMapper := firewall .NewPrivacyMapper (
10881088 g .firewallDB .PrivacyDB , firewall .CryptoRandIntn ,
1089- g .sessionDB ,
1089+ g .stores . sessions ,
10901090 )
10911091
10921092 mw := []mid.RequestInterceptor {
@@ -1097,7 +1097,7 @@ func (g *LightningTerminal) startInternalSubServers(ctx context.Context,
10971097
10981098 if ! g .cfg .Autopilot .Disable {
10991099 ruleEnforcer := firewall .NewRuleEnforcer (
1100- g .firewallDB , g .firewallDB , g .sessionDB ,
1100+ g .firewallDB , g .firewallDB , g .stores . sessions ,
11011101 g .autopilotClient .ListFeaturePerms ,
11021102 g .permsMgr , g .lndClient .NodePubkey ,
11031103 g .lndClient .Router ,
@@ -1436,14 +1436,6 @@ func (g *LightningTerminal) shutdownSubServers() error {
14361436 }
14371437 }
14381438
1439- if g .accountsStore != nil {
1440- err = g .accountsStore .Close ()
1441- if err != nil {
1442- log .Errorf ("Error closing accounts store: %v" , err )
1443- returnErr = err
1444- }
1445- }
1446-
14471439 if g .middlewareStarted {
14481440 g .middleware .Stop ()
14491441 }
@@ -1462,9 +1454,10 @@ func (g *LightningTerminal) shutdownSubServers() error {
14621454 }
14631455 }
14641456
1465- if g .sessionDB != nil {
1466- if err := g .sessionDB .Close (); err != nil {
1467- log .Errorf ("Error closing session DB: %v" , err )
1457+ if g .stores != nil {
1458+ err = g .stores .close ()
1459+ if err != nil {
1460+ log .Errorf ("Error closing stores: %v" , err )
14681461 returnErr = err
14691462 }
14701463 }
0 commit comments