name db with chain+nodeId
This commit is contained in:
parent
fef5aadcf7
commit
97b6afce7c
@ -12,11 +12,11 @@ import fr.acinq.lightning.NodeParams
|
|||||||
import fr.acinq.lightning.bin.db.SqlitePaymentsDb
|
import fr.acinq.lightning.bin.db.SqlitePaymentsDb
|
||||||
import fr.acinq.lightning.bin.db.WalletPaymentId
|
import fr.acinq.lightning.bin.db.WalletPaymentId
|
||||||
import fr.acinq.lightning.bin.json.ApiType.*
|
import fr.acinq.lightning.bin.json.ApiType.*
|
||||||
|
import fr.acinq.lightning.bin.json.ApiType.Channel
|
||||||
import fr.acinq.lightning.blockchain.fee.FeeratePerByte
|
import fr.acinq.lightning.blockchain.fee.FeeratePerByte
|
||||||
import fr.acinq.lightning.blockchain.fee.FeeratePerKw
|
import fr.acinq.lightning.blockchain.fee.FeeratePerKw
|
||||||
import fr.acinq.lightning.channel.ChannelCommand
|
import fr.acinq.lightning.channel.ChannelCommand
|
||||||
import fr.acinq.lightning.channel.states.ChannelStateWithCommitments
|
import fr.acinq.lightning.channel.states.*
|
||||||
import fr.acinq.lightning.channel.states.ClosingFeerates
|
|
||||||
import fr.acinq.lightning.io.Peer
|
import fr.acinq.lightning.io.Peer
|
||||||
import fr.acinq.lightning.io.WrappedChannelCommand
|
import fr.acinq.lightning.io.WrappedChannelCommand
|
||||||
import fr.acinq.lightning.payment.Bolt11Invoice
|
import fr.acinq.lightning.payment.Bolt11Invoice
|
||||||
@ -79,15 +79,17 @@ class Api(private val nodeParams: NodeParams, private val peer: Peer, private va
|
|||||||
authenticate {
|
authenticate {
|
||||||
get("getinfo") {
|
get("getinfo") {
|
||||||
val info = NodeInfo(
|
val info = NodeInfo(
|
||||||
version = BuildVersions.phoenixdVersion,
|
|
||||||
nodeId = nodeParams.nodeId,
|
nodeId = nodeParams.nodeId,
|
||||||
channels = peer.channels.values.map { Channel.from(it) }
|
channels = peer.channels.values.map { Channel.from(it) },
|
||||||
|
chain = nodeParams.chain.name.lowercase(),
|
||||||
|
version = BuildVersions.phoenixdVersion
|
||||||
)
|
)
|
||||||
call.respond(info)
|
call.respond(info)
|
||||||
}
|
}
|
||||||
get("getbalance") {
|
get("getbalance") {
|
||||||
val balance = peer.channels.values
|
val balance = peer.channels.values
|
||||||
.filterIsInstance<ChannelStateWithCommitments>()
|
.filterIsInstance<ChannelStateWithCommitments>()
|
||||||
|
.filterNot { it is Closing || it is Closed }
|
||||||
.map { it.commitments.active.first().availableBalanceForSend(it.commitments.params, it.commitments.changes) }
|
.map { it.commitments.active.first().availableBalanceForSend(it.commitments.params, it.commitments.changes) }
|
||||||
.sum().truncateToSatoshi()
|
.sum().truncateToSatoshi()
|
||||||
call.respond(Balance(balance, nodeParams.feeCredit.value))
|
call.respond(Balance(balance, nodeParams.feeCredit.value))
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package fr.acinq.lightning.bin
|
package fr.acinq.lightning.bin
|
||||||
|
|
||||||
import app.cash.sqldelight.db.SqlDriver
|
import app.cash.sqldelight.db.SqlDriver
|
||||||
|
import fr.acinq.bitcoin.Chain
|
||||||
|
import fr.acinq.bitcoin.PublicKey
|
||||||
import okio.Path
|
import okio.Path
|
||||||
|
|
||||||
expect val homeDirectory: Path
|
expect val homeDirectory: Path
|
||||||
|
|
||||||
expect fun createAppDbDriver(dir: Path): SqlDriver
|
expect fun createAppDbDriver(dir: Path, chain: Chain, nodeId: PublicKey): SqlDriver
|
||||||
|
@ -182,8 +182,6 @@ class Phoenixd : CliktCommand() {
|
|||||||
terminal.println()
|
terminal.println()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
consoleLog(gray("version: ${BuildVersions.phoenixdVersion}"))
|
|
||||||
consoleLog(gray("lightning-kmp: ${BuildVersions.lightningKmpVersion}"))
|
|
||||||
consoleLog(cyan("datadir: ${FileSystem.SYSTEM.canonicalize(datadir)}"))
|
consoleLog(cyan("datadir: ${FileSystem.SYSTEM.canonicalize(datadir)}"))
|
||||||
consoleLog(cyan("chain: $chain"))
|
consoleLog(cyan("chain: $chain"))
|
||||||
consoleLog(cyan("autoLiquidity: ${liquidityOptions.autoLiquidity}"))
|
consoleLog(cyan("autoLiquidity: ${liquidityOptions.autoLiquidity}"))
|
||||||
@ -217,7 +215,7 @@ class Phoenixd : CliktCommand() {
|
|||||||
)
|
)
|
||||||
consoleLog(cyan("nodeid: ${nodeParams.nodeId}"))
|
consoleLog(cyan("nodeid: ${nodeParams.nodeId}"))
|
||||||
|
|
||||||
val driver = createAppDbDriver(datadir)
|
val driver = createAppDbDriver(datadir, chain, nodeParams.nodeId)
|
||||||
val database = PhoenixDatabase(
|
val database = PhoenixDatabase(
|
||||||
driver = driver,
|
driver = driver,
|
||||||
lightning_outgoing_payment_partsAdapter = Lightning_outgoing_payment_parts.Adapter(
|
lightning_outgoing_payment_partsAdapter = Lightning_outgoing_payment_parts.Adapter(
|
||||||
|
@ -57,9 +57,10 @@ sealed class ApiType {
|
|||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class NodeInfo(
|
data class NodeInfo(
|
||||||
val version: String,
|
|
||||||
val nodeId: PublicKey,
|
val nodeId: PublicKey,
|
||||||
val channels: List<Channel>
|
val channels: List<Channel>,
|
||||||
|
val chain: String,
|
||||||
|
val version: String
|
||||||
)
|
)
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import kotlin.Boolean;
|
import kotlin.Boolean;
|
||||||
|
|
||||||
PRAGMA foreign_keys = 1;
|
PRAGMA foreign_keys = 1;
|
||||||
|
PRAGMA locking_mode = EXCLUSIVE;
|
||||||
|
|
||||||
-- channels table
|
-- channels table
|
||||||
-- note: boolean are stored as INTEGER, with 0=false
|
-- note: boolean are stored as INTEGER, with 0=false
|
||||||
|
@ -2,14 +2,16 @@ package fr.acinq.lightning.bin
|
|||||||
|
|
||||||
import app.cash.sqldelight.db.SqlDriver
|
import app.cash.sqldelight.db.SqlDriver
|
||||||
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
|
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
|
||||||
|
import fr.acinq.bitcoin.Chain
|
||||||
|
import fr.acinq.bitcoin.PublicKey
|
||||||
import fr.acinq.phoenix.db.PhoenixDatabase
|
import fr.acinq.phoenix.db.PhoenixDatabase
|
||||||
import okio.Path
|
import okio.Path
|
||||||
import okio.Path.Companion.toPath
|
import okio.Path.Companion.toPath
|
||||||
|
|
||||||
actual val homeDirectory: Path = System.getProperty("user.home").toPath()
|
actual val homeDirectory: Path = System.getProperty("user.home").toPath()
|
||||||
|
|
||||||
actual fun createAppDbDriver(dir: Path): SqlDriver {
|
actual fun createAppDbDriver(dir: Path, chain: Chain, nodeId: PublicKey): SqlDriver {
|
||||||
val path = dir / "phoenix.db"
|
val path = dir / "phoenix.${chain.name.lowercase()}.${nodeId.toHex().take(6)}.db"
|
||||||
val driver = JdbcSqliteDriver("jdbc:sqlite:$path")
|
val driver = JdbcSqliteDriver("jdbc:sqlite:$path")
|
||||||
PhoenixDatabase.Schema.create(driver)
|
PhoenixDatabase.Schema.create(driver)
|
||||||
return driver
|
return driver
|
||||||
|
@ -3,6 +3,8 @@ package fr.acinq.lightning.bin
|
|||||||
import app.cash.sqldelight.db.SqlDriver
|
import app.cash.sqldelight.db.SqlDriver
|
||||||
import app.cash.sqldelight.driver.native.NativeSqliteDriver
|
import app.cash.sqldelight.driver.native.NativeSqliteDriver
|
||||||
import fr.acinq.phoenix.db.PhoenixDatabase
|
import fr.acinq.phoenix.db.PhoenixDatabase
|
||||||
|
import fr.acinq.bitcoin.Chain
|
||||||
|
import fr.acinq.bitcoin.PublicKey
|
||||||
import kotlinx.cinterop.ExperimentalForeignApi
|
import kotlinx.cinterop.ExperimentalForeignApi
|
||||||
import kotlinx.cinterop.toKString
|
import kotlinx.cinterop.toKString
|
||||||
import okio.Path
|
import okio.Path
|
||||||
@ -13,8 +15,8 @@ import platform.posix.setenv
|
|||||||
@OptIn(ExperimentalForeignApi::class)
|
@OptIn(ExperimentalForeignApi::class)
|
||||||
actual val homeDirectory: Path = setenv("KTOR_LOG_LEVEL", "WARN", 1).let { getenv("HOME")?.toKString()!!.toPath() }
|
actual val homeDirectory: Path = setenv("KTOR_LOG_LEVEL", "WARN", 1).let { getenv("HOME")?.toKString()!!.toPath() }
|
||||||
|
|
||||||
actual fun createAppDbDriver(dir: Path): SqlDriver {
|
actual fun createAppDbDriver(dir: Path, chain: Chain, nodeId: PublicKey): SqlDriver {
|
||||||
return NativeSqliteDriver(PhoenixDatabase.Schema, "phoenix.db",
|
return NativeSqliteDriver(PhoenixDatabase.Schema, "phoenix.${chain.name.lowercase()}.${nodeId.toHex().take(6)}.db",
|
||||||
onConfiguration = { it.copy(extendedConfig = it.extendedConfig.copy(basePath = dir.toString())) }
|
onConfiguration = { it.copy(extendedConfig = it.extendedConfig.copy(basePath = dir.toString())) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user