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>>, path: web::Path, ) -> 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) })) } }