Skip to content

Commit

Permalink
feat: get_balance
Browse files Browse the repository at this point in the history
  • Loading branch information
Kodylow committed May 27, 2024
1 parent 8ed626f commit 90c08e4
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 21 deletions.
4 changes: 2 additions & 2 deletions fedimint-nwc/src/database/db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ use super::payment::{Payment, PAYMENTS_TABLE};
#[derive(Debug, Clone)]
pub struct Database {
db: Arc<RedbDatabase>,
max_amount: u64,
daily_limit: u64,
pub max_amount: u64,
pub daily_limit: u64,
_rate_limit: Duration,
}

Expand Down
39 changes: 20 additions & 19 deletions fedimint-nwc/src/nwc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ use anyhow::{anyhow, Result};
use lightning_invoice::{Bolt11Invoice, Bolt11InvoiceDescription};
use nostr::nips::nip04;
use nostr::nips::nip47::{
ErrorCode, LookupInvoiceRequestParams, LookupInvoiceResponseResult, MakeInvoiceRequestParams,
MakeInvoiceResponseResult, Method, NIP47Error, PayInvoiceRequestParams,
PayKeysendRequestParams, Request, RequestParams, Response, ResponseResult,
ErrorCode, GetBalanceResponseResult, LookupInvoiceRequestParams, LookupInvoiceResponseResult,
MakeInvoiceRequestParams, MakeInvoiceResponseResult, Method, NIP47Error,
PayInvoiceRequestParams, PayKeysendRequestParams, Request, RequestParams, Response,
ResponseResult,
};
use nostr::util::hex;
use nostr::Tag;
Expand Down Expand Up @@ -108,10 +109,7 @@ async fn handle_nwc_params(
RequestParams::PayKeysend(params) => handle_pay_keysend(params, method, db).await,
RequestParams::MakeInvoice(params) => handle_make_invoice(params, multimint, db).await,
RequestParams::LookupInvoice(params) => handle_lookup_invoice(params, method, db).await,
RequestParams::GetBalance => Err(NIP47Error {
code: ErrorCode::Unauthorized,
message: "GetBalance functionality is not implemented yet.".to_string(),
}),
RequestParams::GetBalance => handle_get_balance(method, db).await,
RequestParams::GetInfo => Err(NIP47Error {
code: ErrorCode::Unauthorized,
message: "GetInfo functionality is not implemented yet.".to_string(),
Expand Down Expand Up @@ -270,18 +268,21 @@ async fn handle_lookup_invoice(
})
}

// async fn handle_get_balance(method: Method, db: &Database) -> Response {
// let tracker = tracker.lock().await.sum_payments();
// let remaining_msats = config.daily_limit * 1_000 - tracker;
// info!("Current balance: {remaining_msats}msats");
// Response {
// result_type: Method::GetBalance,
// error: None,
// result: Some(ResponseResult::GetBalance(GetBalanceResponseResult {
// balance: remaining_msats,
// })),
// }
// }
async fn handle_get_balance(method: Method, db: &Database) -> Result<Response, NIP47Error> {
let tracker = db.sum_payments().map_err(|e| NIP47Error {
code: ErrorCode::Unauthorized,
message: format!("Failed to get balance: {e}"),
})?;
let remaining_msats = db.daily_limit * 1_000 - tracker;
info!("Current balance: {remaining_msats}msats");
Ok(Response {
result_type: method,
error: None,
result: Some(ResponseResult::GetBalance(GetBalanceResponseResult {
balance: remaining_msats,
})),
})
}

// async fn handle_get_info(method: Method, nostr: &NostrService) -> Response {
// let lnd_info: GetInfoResponse = lnd.get_info(GetInfoRequest
Expand Down

0 comments on commit 90c08e4

Please sign in to comment.