load(); \support\App::loadAllConfig(['route']); use support\Db; if (!in_array('--apply',$argv,true)) { echo "Plan: add nullable route optimization JSON text and route preview table. No data deletion.\n"; exit; } if (!Db::select("SHOW COLUMNS FROM sa_water_route LIKE 'optimization'")) Db::statement('ALTER TABLE sa_water_route ADD COLUMN optimization LONGTEXT NULL'); Db::statement("CREATE TABLE IF NOT EXISTS sa_water_route_preview ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, token CHAR(64) NOT NULL, actor_id BIGINT UNSIGNED NOT NULL, tasks_hash CHAR(64) NOT NULL, payload LONGTEXT NOT NULL, expires_at DATETIME NOT NULL, UNIQUE KEY preview_token(token), KEY preview_expiry(expires_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); echo "Applied additive route optimization migration.\n";