diff --git a/.sqlx/query-2efd0efe9ce16b2da01d9bcc1603e3a7ad0f9a1e5a457770608bc41dbb83f2dd.json b/.sqlx/query-2efd0efe9ce16b2da01d9bcc1603e3a7ad0f9a1e5a457770608bc41dbb83f2dd.json deleted file mode 100644 index e666764f..00000000 --- a/.sqlx/query-2efd0efe9ce16b2da01d9bcc1603e3a7ad0f9a1e5a457770608bc41dbb83f2dd.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n INSERT INTO payouts_values (user_id, mod_id, amount, created)\n SELECT * FROM UNNEST ($1::bigint[], $2::bigint[], $3::numeric[], $4::timestamptz[])\n ", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Int8Array", - "Int8Array", - "NumericArray", - "TimestamptzArray" - ] - }, - "nullable": [] - }, - "hash": "2efd0efe9ce16b2da01d9bcc1603e3a7ad0f9a1e5a457770608bc41dbb83f2dd" -} diff --git a/src/queue/payouts.rs b/src/queue/payouts.rs index 6c8ac34e..7a209375 100644 --- a/src/queue/payouts.rs +++ b/src/queue/payouts.rs @@ -13,6 +13,7 @@ use rust_decimal::Decimal; use serde::de::DeserializeOwned; use serde::{Deserialize, Serialize}; use serde_json::Value; +use sqlx::postgres::PgQueryResult; use sqlx::PgPool; use std::collections::HashMap; use std::sync::Arc; @@ -734,3 +735,25 @@ pub async fn process_payout( Ok(()) } + +// Used for testing, should be the same as the above function +pub async fn insert_payouts( + insert_user_ids: Vec, + insert_project_ids: Vec, + insert_payouts: Vec, + insert_starts: Vec>, + transaction: &mut sqlx::Transaction<'_, sqlx::Postgres>, +) -> sqlx::Result { + sqlx::query!( + " + INSERT INTO payouts_values (user_id, mod_id, amount, created) + SELECT * FROM UNNEST ($1::bigint[], $2::bigint[], $3::numeric[], $4::timestamptz[]) + ", + &insert_user_ids[..], + &insert_project_ids[..], + &insert_payouts[..], + &insert_starts[..] + ) + .execute(&mut **transaction) + .await +} diff --git a/tests/analytics.rs b/tests/analytics.rs index 4f00258d..b83d7989 100644 --- a/tests/analytics.rs +++ b/tests/analytics.rs @@ -10,6 +10,7 @@ use common::{ use itertools::Itertools; use labrinth::models::ids::base62_impl::parse_base62; use labrinth::models::teams::ProjectPermissions; +use labrinth::queue::payouts; use rust_decimal::{prelude::ToPrimitive, Decimal}; mod common; @@ -55,19 +56,17 @@ pub async fn analytics_revenue() { insert_starts.push(*time); } - sqlx::query!( - " - INSERT INTO payouts_values (user_id, mod_id, amount, created) - SELECT * FROM UNNEST ($1::bigint[], $2::bigint[], $3::numeric[], $4::timestamptz[]) - ", - &insert_user_ids[..], - &insert_project_ids[..], - &insert_payouts[..], - &insert_starts[..] + let mut transaction = pool.begin().await.unwrap(); + payouts::insert_payouts( + insert_user_ids, + insert_project_ids, + insert_payouts, + insert_starts, + &mut transaction, ) - .execute(&pool) .await .unwrap(); + transaction.commit().await.unwrap(); let day = 86400;