mining
All checks were successful
Deploy / deploy-staging (push) Successful in 35s
Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-08-21 01:14:32 +02:00
parent 95100d3a78
commit fb852e33e5
4 changed files with 92 additions and 14 deletions

View File

@@ -267,6 +267,9 @@ final class SchemaManager
$this->upgradePurchasedMinerSettlementColumns();
$applied[] = 'purchased_miner_settlement_columns';
}
if ($this->repairLegacySettlementFallbacks() > 0) {
$applied[] = 'legacy_settlement_fallbacks';
}
if ($this->tableExists($this->prefix . 'targets') && $this->tableExists($this->prefix . 'miner_offers')) {
$this->ensureTargetOfferForeignKey();
$applied[] = 'target_offer_foreign_key';
@@ -417,6 +420,9 @@ final class SchemaManager
$this->upgradePurchasedMinerSettlementColumns();
$applied[] = 'purchased_miner_settlement_columns';
}
if ($this->repairLegacySettlementFallbacks() > 0) {
$applied[] = 'legacy_settlement_fallbacks';
}
if ($this->tableExists($this->prefix . 'targets') && $this->tableExists($this->prefix . 'miner_offers')) {
$this->ensureTargetOfferForeignKey();
$applied[] = 'target_offer_foreign_key';
@@ -1533,13 +1539,13 @@ final class SchemaManager
'ALTER TABLE ' . $table . ' ADD COLUMN IF NOT EXISTS settled_value_amount NUMERIC(20,8)',
'ALTER TABLE ' . $table . ' ADD COLUMN IF NOT EXISTS settled_value_currency VARCHAR(10)',
'ALTER TABLE ' . $table . ' ADD COLUMN IF NOT EXISTS settled_fx_fetch_id BIGINT',
"UPDATE " . $table . " SET settled_value_amount = CASE WHEN reference_price_amount IS NOT NULL AND NULLIF(BTRIM(reference_price_currency), '') IS NOT NULL AND UPPER(reference_price_currency) <> UPPER(currency) THEN reference_price_amount ELSE total_cost_amount * 0.07 END, settled_value_currency = CASE WHEN reference_price_amount IS NOT NULL AND NULLIF(BTRIM(reference_price_currency), '') IS NOT NULL AND UPPER(reference_price_currency) <> UPPER(currency) THEN reference_price_currency ELSE 'EUR' END WHERE UPPER(currency) IN ('ADA','ARB','BNB','BTC','DAI','DOGE','DOT','ETH','LINK','LTC','SOL','USDC','USDT','XRP') AND settled_value_amount IS NULL",
"UPDATE " . $table . " SET settled_value_amount = CASE WHEN reference_price_amount IS NOT NULL AND NULLIF(BTRIM(reference_price_currency), '') IS NOT NULL AND UPPER(reference_price_currency) <> UPPER(currency) THEN reference_price_amount ELSE total_cost_amount * 0.07 END, settled_value_currency = CASE WHEN reference_price_amount IS NOT NULL AND NULLIF(BTRIM(reference_price_currency), '') IS NOT NULL AND UPPER(reference_price_currency) <> UPPER(currency) THEN reference_price_currency ELSE 'USD' END WHERE UPPER(currency) IN ('ADA','ARB','BNB','BTC','DAI','DOGE','DOT','ETH','LINK','LTC','SOL','USDC','USDT','XRP') AND settled_value_amount IS NULL",
]
: [
'ALTER TABLE `' . $table . '` ADD COLUMN settled_value_amount DECIMAL(20,8) NULL',
'ALTER TABLE `' . $table . '` ADD COLUMN settled_value_currency VARCHAR(10) NULL',
'ALTER TABLE `' . $table . '` ADD COLUMN settled_fx_fetch_id BIGINT UNSIGNED NULL',
"UPDATE `" . $table . "` SET settled_value_amount = CASE WHEN reference_price_amount IS NOT NULL AND NULLIF(TRIM(reference_price_currency), '') IS NOT NULL AND UPPER(reference_price_currency) <> UPPER(currency) THEN reference_price_amount ELSE total_cost_amount * 0.07 END, settled_value_currency = CASE WHEN reference_price_amount IS NOT NULL AND NULLIF(TRIM(reference_price_currency), '') IS NOT NULL AND UPPER(reference_price_currency) <> UPPER(currency) THEN reference_price_currency ELSE 'EUR' END WHERE UPPER(currency) IN ('ADA','ARB','BNB','BTC','DAI','DOGE','DOT','ETH','LINK','LTC','SOL','USDC','USDT','XRP') AND settled_value_amount IS NULL",
"UPDATE `" . $table . "` SET settled_value_amount = CASE WHEN reference_price_amount IS NOT NULL AND NULLIF(TRIM(reference_price_currency), '') IS NOT NULL AND UPPER(reference_price_currency) <> UPPER(currency) THEN reference_price_amount ELSE total_cost_amount * 0.07 END, settled_value_currency = CASE WHEN reference_price_amount IS NOT NULL AND NULLIF(TRIM(reference_price_currency), '') IS NOT NULL AND UPPER(reference_price_currency) <> UPPER(currency) THEN reference_price_currency ELSE 'USD' END WHERE UPPER(currency) IN ('ADA','ARB','BNB','BTC','DAI','DOGE','DOT','ETH','LINK','LTC','SOL','USDC','USDT','XRP') AND settled_value_amount IS NULL",
];
foreach ($statements as $statement) {
@@ -1554,6 +1560,25 @@ final class SchemaManager
}
}
private function repairLegacySettlementFallbacks(): int
{
$table = $this->prefix . 'purchased_miners';
if (
!$this->tableExists($table) ||
!$this->columnExists($table, 'settled_value_amount') ||
!$this->columnExists($table, 'settled_value_currency') ||
!$this->columnExists($table, 'settled_fx_fetch_id')
) {
return 0;
}
$tableReference = $this->driver === 'pgsql' ? $table : '`' . str_replace('`', '``', $table) . '`';
$sql = "UPDATE {$tableReference} SET settled_value_amount = total_cost_amount * 0.07, settled_value_currency = 'USD' WHERE settled_fx_fetch_id IS NULL AND UPPER(currency) IN ('ADA','ARB','BNB','BTC','DAI','DOGE','DOT','ETH','LINK','LTC','SOL','USDC','USDT','XRP') AND UPPER(COALESCE(settled_value_currency, '')) = 'EUR' AND settled_value_amount = total_cost_amount * 0.07";
$stmt = $this->pdo->prepare($sql);
$stmt->execute();
return $stmt->rowCount();
}
private function upgradeServerDailyCostColumns(): void
{
foreach ([$this->prefix . 'cost_plans', $this->prefix . 'purchased_miners'] as $table) {