Files
lnd/config_test_native_sql.go

70 lines
1.8 KiB
Go

//go:build test_native_sql
package lnd
import (
"context"
"database/sql"
"fmt"
"github.com/btcsuite/btcd/chaincfg/chainhash"
graphdb "github.com/lightningnetwork/lnd/graph/db"
"github.com/lightningnetwork/lnd/kvdb"
"github.com/lightningnetwork/lnd/sqldb"
"github.com/lightningnetwork/lnd/sqldb/sqlc"
)
// RunTestSQLMigration is a build tag that indicates whether the test_native_sql
// build tag is set.
var RunTestSQLMigration = true
// getGraphStore returns a graphdb.V1Store backed by a graphdb.SQLStore
// implementation.
func (d *DefaultDatabaseBuilder) getGraphStore(baseDB *sqldb.BaseDB,
_ kvdb.Backend, opts ...graphdb.StoreOptionModifier) (graphdb.V1Store,
error) {
graphExecutor := sqldb.NewTransactionExecutor(
baseDB, func(tx *sql.Tx) graphdb.SQLQueries {
return baseDB.WithTx(tx)
},
)
return graphdb.NewSQLStore(
&graphdb.SQLStoreConfig{
ChainHash: *d.cfg.ActiveNetParams.GenesisHash,
PaginationCfg: sqldb.DefaultPagedQueryConfig(),
},
graphExecutor, opts...,
)
}
// graphSQLMigration is the version number for the graph migration
// that migrates the KV graph to the native SQL schema.
const graphSQLMigration = 9
// getSQLMigration returns a migration function for the given version.
func getSQLMigration(ctx context.Context, version int,
kvBackend kvdb.Backend,
chain chainhash.Hash) (func(tx *sqlc.Queries) error, bool) {
switch version {
case graphSQLMigration:
return func(tx *sqlc.Queries) error {
err := graphdb.MigrateGraphToSQL(
ctx, kvBackend, tx, chain,
)
if err != nil {
return fmt.Errorf("failed to migrate graph "+
"to SQL: %w", err)
}
return nil
}, true
}
// No version was matched, so we return false to indicate that no
// migration is known for the given version.
return nil, false
}