mirror of
https://github.com/modrinth/code.git
synced 2026-09-03 13:36:48 +00:00
remove running state
This commit is contained in:
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"db_name": "PostgreSQL",
|
"db_name": "PostgreSQL",
|
||||||
"query": "\n\t\t\tSELECT\n\t\t\t\tpayout_periods.period,\n\t\t\t\tpayout_periods.raw_actual_aditude_revenue_usd,\n\t\t\t\tpayout_periods.revenue_adjustments AS \"revenue_adjustments: Json<Vec<RevenueAdjustment>>\",\n\t\t\t\tactive_run.payload AS \"active_run_payload: Json<PayoutRunPayload>\",\n\t\t\t\tactive_run.execute_at AS active_run_execute_at,\n\t\t\t\tEXISTS (\n\t\t\t\t\tSELECT 1\n\t\t\t\t\tFROM payout_runs\n\t\t\t\t\tWHERE payout_runs.period = payout_periods.period\n\t\t\t\t\t\tAND payout_runs.status = 'succeeded'\n\t\t\t\t) AS \"has_succeeded_run!\"\n\t\t\tFROM payout_periods\n\t\t\tLEFT JOIN payout_runs active_run\n\t\t\t\tON active_run.period = payout_periods.period\n\t\t\t\tAND active_run.status IN ('scheduled', 'running')\n\t\t\tWHERE payout_periods.period = ANY($1)\n\t\t\t",
|
"query": "\n\t\t\tSELECT\n\t\t\t\tpayout_periods.period,\n\t\t\t\tpayout_periods.raw_actual_aditude_revenue_usd,\n\t\t\t\tpayout_periods.revenue_adjustments AS \"revenue_adjustments: Json<Vec<RevenueAdjustment>>\",\n\t\t\t\tactive_run.payload AS \"active_run_payload: Json<PayoutRunPayload>\",\n\t\t\t\tactive_run.execute_at AS active_run_execute_at,\n\t\t\t\tEXISTS (\n\t\t\t\t\tSELECT 1\n\t\t\t\t\tFROM payout_runs\n\t\t\t\t\tWHERE payout_runs.period = payout_periods.period\n\t\t\t\t\t\tAND payout_runs.status = 'succeeded'\n\t\t\t\t) AS \"has_succeeded_run!\"\n\t\t\tFROM payout_periods\n\t\t\tLEFT JOIN payout_runs active_run\n\t\t\t\tON active_run.period = payout_periods.period\n\t\t\t\tAND active_run.status = 'scheduled'\n\t\t\tWHERE payout_periods.period = ANY($1)\n\t\t\t",
|
||||||
"describe": {
|
"describe": {
|
||||||
"columns": [
|
"columns": [
|
||||||
{
|
{
|
||||||
@@ -48,5 +48,5 @@
|
|||||||
null
|
null
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"hash": "0f8bb9a3ade9d28ee2d91e10b3d06a03bccfe57a196c62b27b5334525f32e0ca"
|
"hash": "24871c7ee6d92749a6c04332258057ea712c3db9cfeb14efc79c8b44996ff1ff"
|
||||||
}
|
}
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"db_name": "PostgreSQL",
|
"db_name": "PostgreSQL",
|
||||||
"query": "\n SELECT\n EXISTS (\n SELECT 1\n FROM payout_runs\n WHERE status IN ('scheduled', 'running')\n ) AS \"has_active_run!\",\n EXISTS (\n SELECT 1\n FROM payout_runs\n WHERE period = $1\n AND status = 'succeeded'\n ) AS \"has_succeeded_run!\"\n ",
|
"query": "\n SELECT\n EXISTS (\n SELECT 1\n FROM payout_runs\n WHERE status = 'scheduled'\n ) AS \"has_active_run!\",\n EXISTS (\n SELECT 1\n FROM payout_runs\n WHERE period = $1\n AND status = 'succeeded'\n ) AS \"has_succeeded_run!\"\n ",
|
||||||
"describe": {
|
"describe": {
|
||||||
"columns": [
|
"columns": [
|
||||||
{
|
{
|
||||||
@@ -24,5 +24,5 @@
|
|||||||
null
|
null
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"hash": "c4ebaf1d3b32250101b0f31bc6decb7d62a7e7160c6aa95cea71ff11ea43c973"
|
"hash": "b513ecd0e29533aa390ec88cdfe59dfe2e5b85ee2e17744eae4e0b59ce7cb39c"
|
||||||
}
|
}
|
||||||
@@ -41,7 +41,7 @@ CREATE TABLE payout_runs (
|
|||||||
|
|
||||||
CREATE UNIQUE INDEX payout_runs_active_period
|
CREATE UNIQUE INDEX payout_runs_active_period
|
||||||
ON payout_runs (period)
|
ON payout_runs (period)
|
||||||
WHERE status IN ('scheduled', 'running');
|
WHERE status = 'scheduled';
|
||||||
|
|
||||||
CREATE UNIQUE INDEX payout_runs_succeeded_period
|
CREATE UNIQUE INDEX payout_runs_succeeded_period
|
||||||
ON payout_runs (period)
|
ON payout_runs (period)
|
||||||
|
|||||||
@@ -35,4 +35,4 @@ DROP INDEX payout_runs_active_period;
|
|||||||
|
|
||||||
CREATE UNIQUE INDEX payout_runs_single_active
|
CREATE UNIQUE INDEX payout_runs_single_active
|
||||||
ON payout_runs ((TRUE))
|
ON payout_runs ((TRUE))
|
||||||
WHERE status IN ('scheduled', 'running');
|
WHERE status = 'scheduled';
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ impl DBPayoutPeriod {
|
|||||||
FROM payout_periods
|
FROM payout_periods
|
||||||
LEFT JOIN payout_runs active_run
|
LEFT JOIN payout_runs active_run
|
||||||
ON active_run.period = payout_periods.period
|
ON active_run.period = payout_periods.period
|
||||||
AND active_run.status IN ('scheduled', 'running')
|
AND active_run.status = 'scheduled'
|
||||||
WHERE payout_periods.period = ANY($1)
|
WHERE payout_periods.period = ANY($1)
|
||||||
"#,
|
"#,
|
||||||
periods,
|
periods,
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ use crate::queue::payout_run::PayoutRunPayload;
|
|||||||
#[strum(serialize_all = "snake_case")]
|
#[strum(serialize_all = "snake_case")]
|
||||||
pub enum PayoutRunStatus {
|
pub enum PayoutRunStatus {
|
||||||
Scheduled,
|
Scheduled,
|
||||||
Running,
|
|
||||||
Cancelled,
|
Cancelled,
|
||||||
Failed,
|
Failed,
|
||||||
Succeeded,
|
Succeeded,
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ pub async fn start_run(
|
|||||||
EXISTS (
|
EXISTS (
|
||||||
SELECT 1
|
SELECT 1
|
||||||
FROM payout_runs
|
FROM payout_runs
|
||||||
WHERE status IN ('scheduled', 'running')
|
WHERE status = 'scheduled'
|
||||||
) AS "has_active_run!",
|
) AS "has_active_run!",
|
||||||
EXISTS (
|
EXISTS (
|
||||||
SELECT 1
|
SELECT 1
|
||||||
@@ -343,7 +343,7 @@ pub async fn start_run(
|
|||||||
.wrap_internal_err("checking payout period run status")?;
|
.wrap_internal_err("checking payout period run status")?;
|
||||||
if run_state.has_active_run {
|
if run_state.has_active_run {
|
||||||
return Err(ApiError::Conflict(eyre::eyre!(
|
return Err(ApiError::Conflict(eyre::eyre!(
|
||||||
"another payout run is already scheduled or running",
|
"another payout run is already scheduled",
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
if run_state.has_succeeded_run {
|
if run_state.has_succeeded_run {
|
||||||
@@ -419,7 +419,7 @@ pub async fn start_run(
|
|||||||
&& error.constraint() == Some("payout_runs_single_active")
|
&& error.constraint() == Some("payout_runs_single_active")
|
||||||
{
|
{
|
||||||
return Err(ApiError::Conflict(eyre::eyre!(
|
return Err(ApiError::Conflict(eyre::eyre!(
|
||||||
"another payout run is already scheduled or running",
|
"another payout run is already scheduled",
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
create_run_result.wrap_internal_err("creating scheduled payout run")?;
|
create_run_result.wrap_internal_err("creating scheduled payout run")?;
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ async fn payout_run_lineage_and_active_run_constraints() {
|
|||||||
insert_run(pool, 1002, periods[1], "scheduled")
|
insert_run(pool, 1002, periods[1], "scheduled")
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let second_active = insert_run(pool, 1003, periods[2], "running")
|
let second_active = insert_run(pool, 1003, periods[2], "scheduled")
|
||||||
.await
|
.await
|
||||||
.unwrap_err();
|
.unwrap_err();
|
||||||
assert_constraint(second_active, "payout_runs_single_active");
|
assert_constraint(second_active, "payout_runs_single_active");
|
||||||
|
|||||||
Reference in New Issue
Block a user