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