diff --git a/src/worker/sql.rs b/src/worker/sql.rs index a98366d..40a3943 100644 --- a/src/worker/sql.rs +++ b/src/worker/sql.rs @@ -625,11 +625,32 @@ UPDATE falukant_data.director SET last_salary_payout = NOW() WHERE id = $1; pub const QUERY_UPDATE_SATISFACTION: &str = r#" WITH adjusted_income AS ( + WITH desired AS ( + SELECT + d.id, + d.employer_user_id, + GREATEST( + 0, + ROUND( + GREATEST( + 1.0, + c.title_of_nobility::float8 + * POWER(1.231, AVG(k.knowledge) / 1.5) + ) + )::int + ) AS desired_income + FROM falukant_data.director d + JOIN falukant_data.knowledge k ON d.director_character_id = k.character_id + JOIN falukant_data.character c ON c.id = d.director_character_id + WHERE COALESCE(d.auto_adjust_income, false) = true + GROUP BY d.id, d.employer_user_id, c.title_of_nobility + ) UPDATE falukant_data.director d - SET income = GREATEST(0, COALESCE(d.wished_income, d.income)), + SET income = des.desired_income, updated_at = NOW() - WHERE COALESCE(d.auto_adjust_income, false) = true - AND d.income IS DISTINCT FROM GREATEST(0, COALESCE(d.wished_income, d.income)) + FROM desired des + WHERE d.id = des.id + AND d.income IS DISTINCT FROM des.desired_income RETURNING d.id, d.employer_user_id ), salary_gap AS (