Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 27 additions & 12 deletions apps/labrinth/src/queue/payouts/mural.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use muralpay::{MuralError, MuralPay, TokenFeeRequest};
use rust_decimal::{Decimal, prelude::ToPrimitive};
use serde::{Deserialize, Serialize};
use sqlx::PgPool;
use tracing::{info, warn};
use tracing::{info, trace, warn};

use crate::{
database::models::DBPayoutId,
Expand Down Expand Up @@ -399,13 +399,22 @@ pub async fn sync_failed_mural_payouts_to_labrinth(
break;
}

let num_canceled = search_resp
.results
.iter()
.filter(|p| p.status == muralpay::PayoutStatus::Canceled)
.count();
let num_failed = search_resp
.results
.iter()
.filter(|p| p.status == muralpay::PayoutStatus::Failed)
.count();
info!(
"Found {} canceled or failed Mural payouts",
search_resp.results.len()
"Found {num_canceled} canceled and {num_failed} failed Mural payouts"
);

let mut payout_platform_id = Vec::<String>::new();
let mut payout_new_status = Vec::<String>::new();
let mut payout_platform_ids = Vec::<String>::new();
let mut payout_new_statuses = Vec::<String>::new();

for payout_req in search_resp.results {
let new_payout_status = match payout_req.status {
Expand All @@ -419,12 +428,17 @@ pub async fn sync_failed_mural_payouts_to_labrinth(
continue;
}
};
let payout_platform_id = payout_req.id;

trace!(
"- Payout {payout_platform_id} set to {new_payout_status:?}",
);

payout_platform_id.push(payout_req.id.to_string());
payout_new_status.push(new_payout_status.to_string());
payout_platform_ids.push(payout_platform_id.to_string());
payout_new_statuses.push(new_payout_status.to_string());
}

sqlx::query!(
let result = sqlx::query!(
"
UPDATE payouts
SET status = u.status
Expand All @@ -433,17 +447,18 @@ pub async fn sync_failed_mural_payouts_to_labrinth(
payouts.method = $3
AND payouts.platform_id = u.platform_id
",
&payout_platform_id,
&payout_new_status,
&payout_platform_ids,
&payout_new_statuses,
PayoutMethodType::MuralPay.as_str(),
)
.execute(db)
.await
.wrap_internal_err("failed to update payout statuses")?;

info!(
"Updated {} payouts in database from Mural info",
payout_platform_id.len()
"Attempted to update {} payouts in database from Mural info, {} rows affected",
payout_platform_ids.len(),
result.rows_affected()
);

if next_id.is_none() {
Expand Down