4NK_certificator/src/api/payments.rs
2025-10-01 09:45:33 +00:00

49 lines
1.5 KiB
Rust

use actix_web::{web, HttpResponse};
use std::sync::Arc;
use tokio::sync::Mutex;
use crate::db::Database;
pub async fn get_payments(
db: web::Data<Arc<Mutex<Database>>>,
path: web::Path<String>,
) -> HttpResponse {
let address = path.into_inner();
let db = db.lock().await;
// Get all processes with this address
match db.get_all_processes().await {
Ok(processes) => {
let matching_processes: Vec<_> = processes.iter()
.filter(|p| p.btc_address.as_ref() == Some(&address))
.collect();
if matching_processes.is_empty() {
return HttpResponse::NotFound().json(serde_json::json!({
"error": "No processes found with this address"
}));
}
let mut all_payments = vec![];
let mut total_received: i64 = 0;
// TODO: Add get_payments_for_address method to Database
// For now, return process info
for process in matching_processes {
total_received += process.total_paid_sats;
}
HttpResponse::Ok().json(serde_json::json!({
"address": address,
"total_received_sats": total_received,
"processes": matching_processes.len(),
"payments": all_payments
}))
},
Err(e) => HttpResponse::InternalServerError().json(serde_json::json!({
"error": format!("Failed to query database: {}", e)
}))
}
}