@@ -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,16 @@ 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+ // stores struct.
246+ close func () error
247+ }
248+
239249// Run starts everything and then blocks until either the application is shut
240250// down or a critical error happens.
241251func (g * LightningTerminal ) Run (ctx context.Context ) error {
@@ -421,14 +431,13 @@ func (g *LightningTerminal) start(ctx context.Context) error {
421431 return fmt .Errorf ("could not create network directory: %v" , err )
422432 }
423433
424- clock := clock .NewDefaultClock ()
425- g .accountsStore , err = NewAccountStore (g .cfg , clock )
434+ g .stores , err = NewStores (g .cfg , clock .NewDefaultClock ())
426435 if err != nil {
427- return fmt .Errorf ("error creating accounts store : %w " , err )
436+ return fmt .Errorf ("could not create stores : %v " , err )
428437 }
429438
430439 g .accountService , err = accounts .NewService (
431- g .accountsStore , accountServiceErrCallback ,
440+ g .stores . accounts , accountServiceErrCallback ,
432441 )
433442 if err != nil {
434443 return fmt .Errorf ("error creating account service: %v" , err )
@@ -448,16 +457,8 @@ func (g *LightningTerminal) start(ctx context.Context) error {
448457
449458 g .ruleMgrs = rules .NewRuleManagerSet ()
450459
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-
459460 g .firewallDB , err = firewalldb .NewDB (
460- networkDir , firewalldb .DBFilename , g .sessionDB ,
461+ networkDir , firewalldb .DBFilename , g .stores . sessions ,
461462 )
462463 if err != nil {
463464 return fmt .Errorf ("error creating firewall DB: %v" , err )
@@ -493,7 +494,7 @@ func (g *LightningTerminal) start(ctx context.Context) error {
493494 }
494495
495496 g .sessionRpcServer , err = newSessionRPCServer (& sessionRpcServerConfig {
496- db : g .sessionDB ,
497+ db : g .stores . sessions ,
497498 basicAuth : g .rpcProxy .basicAuth ,
498499 grpcOptions : []grpc.ServerOption {
499500 grpc .CustomCodec (grpcProxy .Codec ()), // nolint: staticcheck,
@@ -1086,7 +1087,7 @@ func (g *LightningTerminal) startInternalSubServers(ctx context.Context,
10861087
10871088 privacyMapper := firewall .NewPrivacyMapper (
10881089 g .firewallDB .PrivacyDB , firewall .CryptoRandIntn ,
1089- g .sessionDB ,
1090+ g .stores . sessions ,
10901091 )
10911092
10921093 mw := []mid.RequestInterceptor {
@@ -1097,7 +1098,7 @@ func (g *LightningTerminal) startInternalSubServers(ctx context.Context,
10971098
10981099 if ! g .cfg .Autopilot .Disable {
10991100 ruleEnforcer := firewall .NewRuleEnforcer (
1100- g .firewallDB , g .firewallDB , g .sessionDB ,
1101+ g .firewallDB , g .firewallDB , g .stores . sessions ,
11011102 g .autopilotClient .ListFeaturePerms ,
11021103 g .permsMgr , g .lndClient .NodePubkey ,
11031104 g .lndClient .Router ,
@@ -1436,14 +1437,6 @@ func (g *LightningTerminal) shutdownSubServers() error {
14361437 }
14371438 }
14381439
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-
14471440 if g .middlewareStarted {
14481441 g .middleware .Stop ()
14491442 }
@@ -1462,9 +1455,10 @@ func (g *LightningTerminal) shutdownSubServers() error {
14621455 }
14631456 }
14641457
1465- if g .sessionDB != nil {
1466- if err := g .sessionDB .Close (); err != nil {
1467- log .Errorf ("Error closing session DB: %v" , err )
1458+ if g .stores != nil {
1459+ err = g .stores .close ()
1460+ if err != nil {
1461+ log .Errorf ("Error closing stores: %v" , err )
14681462 returnErr = err
14691463 }
14701464 }
0 commit comments