| 
					
				 | 
			
			
				@@ -39,9 +39,11 @@ use cdk::nuts::{AuthRequired, Method, ProtectedEndpoint, RoutePath}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 use cdk::nuts::{ContactInfo, MintVersion, PaymentMethod}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 use cdk::types::QuoteTTL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 use cdk_axum::cache::HttpCache; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#[cfg(feature = "postgres")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 use cdk_postgres::{MintPgAuthDatabase, MintPgDatabase}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#[cfg(feature = "auth")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#[cfg(all(feature = "auth", feature = "sqlite"))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 use cdk_sqlite::mint::MintSqliteAuthDatabase; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#[cfg(feature = "sqlite")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 use cdk_sqlite::MintSqliteDatabase; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 use cli::CLIArgs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 use config::{AuthType, DatabaseEngine, LnBackend}; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -243,19 +245,21 @@ pub fn load_settings(work_dir: &Path, config_path: Option<PathBuf>) -> Result<co 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 async fn setup_database( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     settings: &config::Settings, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    work_dir: &Path, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    db_password: Option<String>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    _work_dir: &Path, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    _db_password: Option<String>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) -> Result<( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     Arc<dyn MintDatabase<cdk_database::Error> + Send + Sync>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     Arc<dyn MintKeysDatabase<Err = cdk_database::Error> + Send + Sync>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 )> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     match settings.database.engine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #[cfg(feature = "sqlite")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         DatabaseEngine::Sqlite => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let db = setup_sqlite_database(work_dir, db_password).await?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let db = setup_sqlite_database(_work_dir, _db_password).await?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let localstore: Arc<dyn MintDatabase<cdk_database::Error> + Send + Sync> = db.clone(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let keystore: Arc<dyn MintKeysDatabase<Err = cdk_database::Error> + Send + Sync> = db; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Ok((localstore, keystore)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #[cfg(feature = "postgres")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         DatabaseEngine::Postgres => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // Get the PostgreSQL configuration, ensuring it exists 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let pg_config = settings.database.postgres.as_ref().ok_or_else(|| { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -266,16 +270,33 @@ async fn setup_database( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 bail!("PostgreSQL URL is required. Set it in config file [database.postgres] section or via CDK_MINTD_POSTGRES_URL/CDK_MINTD_DATABASE_URL environment variable"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #[cfg(feature = "postgres")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let pg_db = Arc::new(MintPgDatabase::new(pg_config.url.as_str()).await?); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #[cfg(feature = "postgres")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let localstore: Arc<dyn MintDatabase<cdk_database::Error> + Send + Sync> = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pg_db.clone(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let keystore: Arc<dyn MintKeysDatabase<Err = cdk_database::Error> + Send + Sync> = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                pg_db; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Ok((localstore, keystore)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #[cfg(feature = "postgres")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let keystore: Arc< 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dyn MintKeysDatabase<Err = cdk_database::Error> + Send + Sync, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > = pg_db; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #[cfg(feature = "postgres")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return Ok((localstore, keystore)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #[cfg(not(feature = "postgres"))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bail!("PostgreSQL support not compiled in. Enable the 'postgres' feature to use PostgreSQL database.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #[cfg(not(feature = "sqlite"))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DatabaseEngine::Sqlite => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bail!("SQLite support not compiled in. Enable the 'sqlite' feature to use SQLite database.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #[cfg(not(feature = "postgres"))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DatabaseEngine::Postgres => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bail!("PostgreSQL support not compiled in. Enable the 'postgres' feature to use PostgreSQL database.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#[cfg(feature = "sqlite")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 async fn setup_sqlite_database( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     work_dir: &Path, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     _password: Option<String>, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -529,8 +550,17 @@ async fn configure_backend_for_unit( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         mint_builder.set_unit_fee(&unit, input_fee)?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let nut17_supported = SupportedMethods::default_bolt11(unit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    mint_builder = mint_builder.with_supported_websockets(nut17_supported); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #[cfg(any( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feature = "cln", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feature = "lnbits", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feature = "lnd", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feature = "fakewallet", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feature = "grpc-processor" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let nut17_supported = SupportedMethods::default_bolt11(unit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mint_builder = mint_builder.with_supported_websockets(nut17_supported); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     Ok(mint_builder) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -550,7 +580,7 @@ fn configure_cache(settings: &config::Settings, mint_builder: MintBuilder) -> Mi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #[cfg(feature = "auth")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 async fn setup_authentication( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     settings: &config::Settings, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    work_dir: &Path, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    _work_dir: &Path, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     mut mint_builder: MintBuilder, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     _password: Option<String>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) -> Result<MintBuilder> { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -559,29 +589,53 @@ async fn setup_authentication( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let auth_localstore: Arc< 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             dyn cdk_database::MintAuthDatabase<Err = cdk_database::Error> + Send + Sync, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         > = match settings.database.engine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #[cfg(feature = "sqlite")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             DatabaseEngine::Sqlite => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let sql_db_path = work_dir.join("cdk-mintd-auth.sqlite"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                #[cfg(not(feature = "sqlcipher"))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let sqlite_db = MintSqliteAuthDatabase::new(&sql_db_path).await?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                #[cfg(feature = "sqlcipher")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let sqlite_db = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // Get password from command line arguments for sqlcipher 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    MintSqliteAuthDatabase::new((sql_db_path, _password.unwrap())).await? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Arc::new(sqlite_db) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                #[cfg(feature = "sqlite")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let sql_db_path = _work_dir.join("cdk-mintd-auth.sqlite"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    #[cfg(not(feature = "sqlcipher"))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let sqlite_db = MintSqliteAuthDatabase::new(&sql_db_path).await?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    #[cfg(feature = "sqlcipher")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let sqlite_db = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        // Get password from command line arguments for sqlcipher 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        MintSqliteAuthDatabase::new((sql_db_path, _password.unwrap())).await? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Arc::new(sqlite_db) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                #[cfg(not(feature = "sqlite"))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    bail!("SQLite support not compiled in. Enable the 'sqlite' feature to use SQLite database.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #[cfg(feature = "postgres")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             DatabaseEngine::Postgres => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // Get the PostgreSQL configuration, ensuring it exists 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let pg_config = settings.database.postgres.as_ref().ok_or_else(|| { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    anyhow!("PostgreSQL configuration is required when using PostgreSQL engine") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                })?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if pg_config.url.is_empty() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    bail!("PostgreSQL URL is required for auth database. Set it in config file [database.postgres] section or via CDK_MINTD_POSTGRES_URL/CDK_MINTD_DATABASE_URL environment variable"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                #[cfg(feature = "postgres")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // Get the PostgreSQL configuration, ensuring it exists 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let pg_config = settings.database.postgres.as_ref().ok_or_else(|| { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        anyhow!("PostgreSQL configuration is required when using PostgreSQL engine") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    })?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if pg_config.url.is_empty() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        bail!("PostgreSQL URL is required for auth database. Set it in config file [database.postgres] section or via CDK_MINTD_POSTGRES_URL/CDK_MINTD_DATABASE_URL environment variable"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Arc::new(MintPgAuthDatabase::new(pg_config.url.as_str()).await?) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Arc::new(MintPgAuthDatabase::new(pg_config.url.as_str()).await?) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                #[cfg(not(feature = "postgres"))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    bail!("PostgreSQL support not compiled in. Enable the 'postgres' feature to use PostgreSQL database.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #[cfg(not(feature = "sqlite"))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DatabaseEngine::Sqlite => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                bail!("SQLite support not compiled in. Enable the 'sqlite' feature to use SQLite database.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #[cfg(not(feature = "postgres"))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DatabaseEngine::Postgres => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                bail!("PostgreSQL support not compiled in. Enable the 'postgres' feature to use PostgreSQL database.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |