mirror of
https://github.com/lightninglabs/loop.git
synced 2026-08-13 12:33:03 +02:00
db: refactor db opening
This commit is contained in:
parent
abecfd3b65
commit
79063d788a
4 changed files with 56 additions and 50 deletions
|
|
@ -392,8 +392,22 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
|
|||
log.Infof("Successfully migrated boltdb")
|
||||
}
|
||||
|
||||
// Now that we know where the database will live, we'll go ahead and
|
||||
// open up the default implementation of it.
|
||||
chainParams, err := lndclient.Network(d.cfg.Network).ChainParams()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
swapDb, _, err := openDatabase(d.cfg, chainParams)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Create an instance of the loop client library.
|
||||
swapclient, clientCleanup, err := getClient(d.cfg, &d.lnd.LndServices)
|
||||
swapClient, clientCleanup, err := getClient(
|
||||
d.cfg, swapDb, &d.lnd.LndServices,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -456,8 +470,8 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
|
|||
d.swapClientServer = swapClientServer{
|
||||
config: d.cfg,
|
||||
network: lndclient.Network(d.cfg.Network),
|
||||
impl: swapclient,
|
||||
liquidityMgr: getLiquidityManager(swapclient),
|
||||
impl: swapClient,
|
||||
liquidityMgr: getLiquidityManager(swapClient),
|
||||
lnd: &d.lnd.LndServices,
|
||||
swaps: make(map[lntypes.Hash]loop.SwapInfo),
|
||||
subscribers: make(map[int]chan<- interface{}),
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package loopd
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
|
|
@ -26,34 +25,14 @@ func migrateBoltdb(ctx context.Context, cfg *Config) error {
|
|||
}
|
||||
defer boltdb.Close()
|
||||
|
||||
var db loopdb.SwapStore
|
||||
switch cfg.DatabaseBackend {
|
||||
case DatabaseBackendSqlite:
|
||||
log.Infof("Opening sqlite3 database at: %v",
|
||||
cfg.Sqlite.DatabaseFileName)
|
||||
db, err = loopdb.NewSqliteStore(
|
||||
cfg.Sqlite, chainParams,
|
||||
)
|
||||
|
||||
case DatabaseBackendPostgres:
|
||||
log.Infof("Opening postgres database at: %v",
|
||||
cfg.Postgres.DSN(true))
|
||||
db, err = loopdb.NewPostgresStore(
|
||||
cfg.Postgres, chainParams,
|
||||
)
|
||||
|
||||
default:
|
||||
return fmt.Errorf("unknown database backend: %s",
|
||||
cfg.DatabaseBackend)
|
||||
}
|
||||
swapDb, _, err := openDatabase(cfg, chainParams)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to open database: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
defer db.Close()
|
||||
defer swapDb.Close()
|
||||
|
||||
// Create a new migrator manager.
|
||||
migrator := loopdb.NewMigratorManager(boltdb, db)
|
||||
migrator := loopdb.NewMigratorManager(boltdb, swapDb)
|
||||
|
||||
// Run the migration.
|
||||
err = migrator.RunMigrations(ctx)
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"github.com/btcsuite/btcd/btcutil"
|
||||
"github.com/btcsuite/btcd/chaincfg"
|
||||
"github.com/lightninglabs/lndclient"
|
||||
"github.com/lightninglabs/loop"
|
||||
"github.com/lightninglabs/loop/liquidity"
|
||||
|
|
@ -15,8 +16,8 @@ import (
|
|||
)
|
||||
|
||||
// getClient returns an instance of the swap client.
|
||||
func getClient(cfg *Config, lnd *lndclient.LndServices) (*loop.Client,
|
||||
func(), error) {
|
||||
func getClient(cfg *Config, swapDb loopdb.SwapStore,
|
||||
lnd *lndclient.LndServices) (*loop.Client, func(), error) {
|
||||
|
||||
clientConfig := &loop.ClientConfig{
|
||||
ServerAddress: cfg.Server.Host,
|
||||
|
|
@ -31,26 +32,40 @@ func getClient(cfg *Config, lnd *lndclient.LndServices) (*loop.Client,
|
|||
MaxPaymentRetries: cfg.MaxPaymentRetries,
|
||||
}
|
||||
|
||||
// Now that we know where the database will live, we'll go ahead and
|
||||
// open up the default implementation of it.
|
||||
swapClient, cleanUp, err := loop.NewClient(
|
||||
cfg.DataDir, swapDb, clientConfig,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
return swapClient, cleanUp, nil
|
||||
}
|
||||
|
||||
func openDatabase(cfg *Config, chainParams *chaincfg.Params) (loopdb.SwapStore,
|
||||
*loopdb.BaseDB, error) { //nolint:unparam
|
||||
|
||||
var (
|
||||
db loopdb.SwapStore
|
||||
err error
|
||||
db loopdb.SwapStore
|
||||
err error
|
||||
baseDb loopdb.BaseDB
|
||||
)
|
||||
switch cfg.DatabaseBackend {
|
||||
case DatabaseBackendSqlite:
|
||||
log.Infof("Opening sqlite3 database at: %v",
|
||||
cfg.Sqlite.DatabaseFileName)
|
||||
db, err = loopdb.NewSqliteStore(
|
||||
cfg.Sqlite, clientConfig.Lnd.ChainParams,
|
||||
cfg.Sqlite, chainParams,
|
||||
)
|
||||
baseDb = *db.(*loopdb.SqliteSwapStore).BaseDB
|
||||
|
||||
case DatabaseBackendPostgres:
|
||||
log.Infof("Opening postgres database at: %v",
|
||||
cfg.Postgres.DSN(true))
|
||||
db, err = loopdb.NewPostgresStore(
|
||||
cfg.Postgres, clientConfig.Lnd.ChainParams,
|
||||
cfg.Postgres, chainParams,
|
||||
)
|
||||
baseDb = *db.(*loopdb.PostgresStore).BaseDB
|
||||
|
||||
default:
|
||||
return nil, nil, fmt.Errorf("unknown database backend: %s",
|
||||
|
|
@ -60,14 +75,7 @@ func getClient(cfg *Config, lnd *lndclient.LndServices) (*loop.Client,
|
|||
return nil, nil, fmt.Errorf("unable to open database: %v", err)
|
||||
}
|
||||
|
||||
swapClient, cleanUp, err := loop.NewClient(
|
||||
cfg.DataDir, db, clientConfig,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
return swapClient, cleanUp, nil
|
||||
return db, &baseDb, nil
|
||||
}
|
||||
|
||||
func getLiquidityManager(client *loop.Client) *liquidity.Manager {
|
||||
|
|
|
|||
|
|
@ -20,17 +20,22 @@ func view(config *Config, lisCfg *ListenerCfg) error {
|
|||
}
|
||||
defer lnd.Close()
|
||||
|
||||
swapClient, cleanup, err := getClient(config, &lnd.LndServices)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer cleanup()
|
||||
|
||||
chainParams, err := network.ChainParams()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
swapDb, _, err := openDatabase(config, chainParams)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
swapClient, cleanup, err := getClient(config, swapDb, &lnd.LndServices)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer cleanup()
|
||||
|
||||
if err := viewOut(swapClient, chainParams); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue