|
@@ -3,6 +3,7 @@ use std::path::PathBuf;
|
|
|
use cdk::nuts::{CurrencyUnit, PublicKey};
|
|
|
use cdk::Amount;
|
|
|
use cdk_axum::cache;
|
|
|
+use cdk_database::DatabaseEngine;
|
|
|
use config::{Config, ConfigError, File};
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
|
@@ -149,26 +150,6 @@ fn default_max_delay_time() -> u64 {
|
|
|
3
|
|
|
}
|
|
|
|
|
|
-#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
|
|
|
-#[serde(rename_all = "lowercase")]
|
|
|
-pub enum DatabaseEngine {
|
|
|
- #[default]
|
|
|
- Sqlite,
|
|
|
- Redb,
|
|
|
-}
|
|
|
-
|
|
|
-impl std::str::FromStr for DatabaseEngine {
|
|
|
- type Err = String;
|
|
|
-
|
|
|
- fn from_str(s: &str) -> Result<Self, Self::Err> {
|
|
|
- match s.to_lowercase().as_str() {
|
|
|
- "sqlite" => Ok(DatabaseEngine::Sqlite),
|
|
|
- "redb" => Ok(DatabaseEngine::Redb),
|
|
|
- _ => Err(format!("Unknown database engine: {}", s)),
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
|
|
pub struct Database {
|
|
|
pub engine: DatabaseEngine,
|
|
@@ -186,6 +167,8 @@ pub struct Settings {
|
|
|
pub phoenixd: Option<Phoenixd>,
|
|
|
pub lnd: Option<Lnd>,
|
|
|
pub fake_wallet: Option<FakeWallet>,
|
|
|
+ pub supported_units: Option<Vec<CurrencyUnit>>,
|
|
|
+ pub remote_signatory: Option<String>,
|
|
|
pub database: Database,
|
|
|
}
|
|
|
|
|
@@ -211,13 +194,13 @@ pub struct MintInfo {
|
|
|
|
|
|
impl Settings {
|
|
|
#[must_use]
|
|
|
- pub fn new<P>(config_file_name: Option<P>) -> Self
|
|
|
+ pub fn new<P>(config_file_name: Option<P>, check_ln: bool) -> Self
|
|
|
where
|
|
|
P: Into<PathBuf>,
|
|
|
{
|
|
|
let default_settings = Self::default();
|
|
|
// attempt to construct settings with file
|
|
|
- let from_file = Self::new_from_default(&default_settings, config_file_name);
|
|
|
+ let from_file = Self::new_from_default(&default_settings, config_file_name, check_ln);
|
|
|
match from_file {
|
|
|
Ok(f) => f,
|
|
|
Err(e) => {
|
|
@@ -230,6 +213,7 @@ impl Settings {
|
|
|
fn new_from_default<P>(
|
|
|
default: &Settings,
|
|
|
config_file_name: Option<P>,
|
|
|
+ check_ln: bool,
|
|
|
) -> Result<Self, ConfigError>
|
|
|
where
|
|
|
P: Into<PathBuf>,
|
|
@@ -252,34 +236,36 @@ impl Settings {
|
|
|
.build()?;
|
|
|
let settings: Settings = config.try_deserialize()?;
|
|
|
|
|
|
- match settings.ln.ln_backend {
|
|
|
- LnBackend::None => panic!("Ln backend must be set"),
|
|
|
- LnBackend::Cln => assert!(
|
|
|
- settings.cln.is_some(),
|
|
|
- "CLN backend requires a valid config."
|
|
|
- ),
|
|
|
- LnBackend::Strike => assert!(
|
|
|
- settings.strike.is_some(),
|
|
|
- "Strike backend requires a valid config."
|
|
|
- ),
|
|
|
- LnBackend::LNbits => assert!(
|
|
|
- settings.lnbits.is_some(),
|
|
|
- "LNbits backend requires a valid config"
|
|
|
- ),
|
|
|
- LnBackend::Phoenixd => assert!(
|
|
|
- settings.phoenixd.is_some(),
|
|
|
- "Phoenixd backend requires a valid config"
|
|
|
- ),
|
|
|
- LnBackend::Lnd => {
|
|
|
- assert!(
|
|
|
- settings.lnd.is_some(),
|
|
|
- "LND backend requires a valid config."
|
|
|
- )
|
|
|
+ if check_ln {
|
|
|
+ match settings.ln.ln_backend {
|
|
|
+ LnBackend::None => panic!("Ln backend must be set"),
|
|
|
+ LnBackend::Cln => assert!(
|
|
|
+ settings.cln.is_some(),
|
|
|
+ "CLN backend requires a valid config."
|
|
|
+ ),
|
|
|
+ LnBackend::Strike => assert!(
|
|
|
+ settings.strike.is_some(),
|
|
|
+ "Strike backend requires a valid config."
|
|
|
+ ),
|
|
|
+ LnBackend::LNbits => assert!(
|
|
|
+ settings.lnbits.is_some(),
|
|
|
+ "LNbits backend requires a valid config"
|
|
|
+ ),
|
|
|
+ LnBackend::Phoenixd => assert!(
|
|
|
+ settings.phoenixd.is_some(),
|
|
|
+ "Phoenixd backend requires a valid config"
|
|
|
+ ),
|
|
|
+ LnBackend::Lnd => {
|
|
|
+ assert!(
|
|
|
+ settings.lnd.is_some(),
|
|
|
+ "LND backend requires a valid config."
|
|
|
+ )
|
|
|
+ }
|
|
|
+ LnBackend::FakeWallet => assert!(
|
|
|
+ settings.fake_wallet.is_some(),
|
|
|
+ "FakeWallet backend requires a valid config."
|
|
|
+ ),
|
|
|
}
|
|
|
- LnBackend::FakeWallet => assert!(
|
|
|
- settings.fake_wallet.is_some(),
|
|
|
- "FakeWallet backend requires a valid config."
|
|
|
- ),
|
|
|
}
|
|
|
|
|
|
Ok(settings)
|