Files
api/services/nginx/app/classes/economic_transfer_queue_schema_bootstrap.php
T

48 lines
1.7 KiB
PHP

<?php
namespace classes;
/**
* Ensures additive schema for e-conomic transfer queue jobs.
*/
class economic_transfer_queue_schema_bootstrap
{
private static bool $initialized = false;
public static function ensureTables(): void
{
if (self::$initialized) {
return;
}
global $db;
$db->query(
"CREATE TABLE IF NOT EXISTS economic_transfer_queue_jobs (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
transfer_type VARCHAR(64) NOT NULL,
payload_json JSON NOT NULL,
status VARCHAR(32) NOT NULL DEFAULT 'QUEUED',
progress_percent TINYINT UNSIGNED NOT NULL DEFAULT 0,
progress_message VARCHAR(255) NULL,
attempts INT NOT NULL DEFAULT 0,
max_attempts INT NOT NULL DEFAULT 3,
error_message TEXT NULL,
result_json JSON NULL,
created_by INT NULL,
started_at DATETIME NULL,
completed_at DATETIME NULL,
next_retry_at DATETIME NULL,
locked_at DATETIME NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_economic_transfer_queue_jobs_status_created (status, created_at),
INDEX idx_economic_transfer_queue_jobs_next_retry (next_retry_at),
INDEX idx_economic_transfer_queue_jobs_transfer_type (transfer_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci"
);
self::$initialized = true;
}
}