7
7
8
8
"github.com/lightninglabs/lightning-terminal/accounts"
9
9
"github.com/lightninglabs/lightning-terminal/db"
10
+ "github.com/lightninglabs/lightning-terminal/session"
10
11
"github.com/lightningnetwork/lnd/clock"
11
12
)
12
13
@@ -80,14 +81,19 @@ func defaultDevConfig() *DevConfig {
80
81
}
81
82
}
82
83
83
- // NewAccountStore creates a new account store based on the chosen database
84
- // backend.
85
- func NewAccountStore (cfg * Config , clock clock.Clock ) (accounts.Store , error ) {
84
+ // NewStores creates a new stores instance based on the chosen database backend.
85
+ func NewStores (cfg * Config , clock clock.Clock ) (* stores , error ) {
86
+ var (
87
+ networkDir = filepath .Join (cfg .LitDir , cfg .Network )
88
+ acctStore accounts.Store
89
+ sessStore session.Store
90
+ closeFn func () error
91
+ )
92
+
86
93
switch cfg .DatabaseBackend {
87
94
case DatabaseBackendSqlite :
88
95
// Before we initialize the SQLite store, we'll make sure that
89
96
// the directory where we will store the database file exists.
90
- networkDir := filepath .Join (cfg .LitDir , cfg .Network )
91
97
err := makeDirectories (networkDir )
92
98
if err != nil {
93
99
return nil , err
@@ -98,20 +104,57 @@ func NewAccountStore(cfg *Config, clock clock.Clock) (accounts.Store, error) {
98
104
return nil , err
99
105
}
100
106
101
- return accounts .NewSQLStore (sqlStore .BaseDB , clock ), nil
107
+ acctStore = accounts .NewSQLStore (sqlStore .BaseDB , clock )
108
+ sessStore = session .NewSQLStore (sqlStore .BaseDB , clock )
109
+ closeFn = sqlStore .BaseDB .Close
102
110
103
111
case DatabaseBackendPostgres :
104
112
sqlStore , err := db .NewPostgresStore (cfg .Postgres )
105
113
if err != nil {
106
114
return nil , err
107
115
}
108
116
109
- return accounts .NewSQLStore (sqlStore .BaseDB , clock ), nil
117
+ acctStore = accounts .NewSQLStore (sqlStore .BaseDB , clock )
118
+ sessStore = session .NewSQLStore (sqlStore .BaseDB , clock )
119
+ closeFn = sqlStore .BaseDB .Close
110
120
111
121
default :
112
- return accounts .NewBoltStore (
122
+ accountStore , err := accounts .NewBoltStore (
113
123
filepath .Dir (cfg .MacaroonPath ), accounts .DBFilename ,
114
124
clock ,
115
125
)
126
+ if err != nil {
127
+ return nil , err
128
+ }
129
+
130
+ sessionStore , err := session .NewDB (
131
+ networkDir , session .DBFilename , clock , accountStore ,
132
+ )
133
+ if err != nil {
134
+ return nil , err
135
+ }
136
+
137
+ acctStore = accountStore
138
+ sessStore = sessionStore
139
+ closeFn = func () error {
140
+ var returnErr error
141
+ err = accountStore .Close ()
142
+ if err != nil {
143
+ returnErr = err
144
+ }
145
+
146
+ err = sessionStore .Close ()
147
+ if err != nil {
148
+ returnErr = err
149
+ }
150
+
151
+ return returnErr
152
+ }
116
153
}
154
+
155
+ return & stores {
156
+ accounts : acctStore ,
157
+ sessions : sessStore ,
158
+ close : closeFn ,
159
+ }, nil
117
160
}
0 commit comments