main.rs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. use std::env;
  2. use anyhow::Result;
  3. use cdk::cdk_database::mint_memory::MintMemoryDatabase;
  4. use cdk_integration_tests::init_regtest::{
  5. fund_ln, get_temp_dir, init_bitcoin_client, init_bitcoind, init_cln, init_cln_client, init_lnd,
  6. init_lnd_client, open_channel, start_cln_mint,
  7. };
  8. use cdk_redb::MintRedbDatabase;
  9. use cdk_sqlite::MintSqliteDatabase;
  10. #[tokio::main]
  11. async fn main() -> Result<()> {
  12. let mut bitcoind = init_bitcoind();
  13. bitcoind.start_bitcoind()?;
  14. let bitcoin_client = init_bitcoin_client()?;
  15. bitcoin_client.create_wallet().ok();
  16. bitcoin_client.load_wallet()?;
  17. let new_add = bitcoin_client.get_new_address()?;
  18. bitcoin_client.generate_blocks(&new_add, 200).unwrap();
  19. let mut clnd = init_cln();
  20. clnd.start_clnd()?;
  21. let cln_client = init_cln_client().await?;
  22. let mut lnd = init_lnd().await;
  23. lnd.start_lnd().unwrap();
  24. let lnd_client = init_lnd_client().await.unwrap();
  25. fund_ln(&bitcoin_client, &cln_client, &lnd_client)
  26. .await
  27. .unwrap();
  28. open_channel(&bitcoin_client, &cln_client, &lnd_client)
  29. .await
  30. .unwrap();
  31. let addr = "127.0.0.1";
  32. let port = 8085;
  33. let mint_db_kind = env::var("MINT_DATABASE")?;
  34. match mint_db_kind.as_str() {
  35. "MEMORY" => {
  36. start_cln_mint(addr, port, MintMemoryDatabase::default()).await?;
  37. }
  38. "SQLITE" => {
  39. let sqlite_db = MintSqliteDatabase::new(&get_temp_dir().join("mint")).await?;
  40. sqlite_db.migrate().await;
  41. start_cln_mint(addr, port, sqlite_db).await?;
  42. }
  43. "REDB" => {
  44. let redb_db = MintRedbDatabase::new(&get_temp_dir().join("mint")).unwrap();
  45. start_cln_mint(addr, port, redb_db).await?;
  46. }
  47. _ => panic!("Unknown mint db type: {}", mint_db_kind),
  48. };
  49. Ok(())
  50. }