getAdapter()->getConnection(); // 1) Le legacy restano engine = 0 (idempotente). $pdo->exec("UPDATE routine SET engine = 0 WHERE engine IS NULL"); // 2) Crea/aggiorna la routine engine di esempio. $name = 'merge_D_F_H_into_J'; $description = 'Unisce le colonne D, F, H nella colonna J durante l\'importazione'; $filename = '_engine.php'; $check = $pdo->prepare("SELECT idroutine FROM routine WHERE name = :name LIMIT 1"); $check->execute([':name' => $name]); $existing = $check->fetch(PDO::FETCH_ASSOC); if ($existing) { $idroutine = (int)$existing['idroutine']; $upd = $pdo->prepare( "UPDATE routine SET description = :descr, filename = :fn, engine = 1, instruction = :instr WHERE idroutine = :id" ); $upd->execute([ ':descr' => $description, ':fn' => $filename, ':instr' => 'Routine gestita dal motore generico (routine_step).', ':id' => $idroutine, ]); } else { $ins = $pdo->prepare( "INSERT INTO routine (name, description, instruction, filename, engine, headerrow) VALUES (:name, :descr, :instr, :fn, 1, 1)" ); $ins->execute([ ':name' => $name, ':descr' => $description, ':instr' => 'Routine gestita dal motore generico (routine_step).', ':fn' => $filename, ]); $idroutine = (int)$pdo->lastInsertId(); } // 3) Ripulisci eventuali step precedenti di questa routine e reinserisci. $del = $pdo->prepare("DELETE FROM routine_step WHERE idroutine = :id"); $del->execute([':id' => $idroutine]); // Step unico: merge D,F,H -> J. Colonne espresse in lettere per leggibilitĂ . $params = json_encode([ 'source_columns' => ['D', 'F', 'H'], 'target_column' => 'J', 'separator' => ' ', 'skip_empty' => true, ], JSON_UNESCAPED_UNICODE); $insStep = $pdo->prepare( "INSERT INTO routine_step (idroutine, step_order, operation, params, active) VALUES (:id, 1, 'merge', :params, 1)" ); $insStep->execute([':id' => $idroutine, ':params' => $params]); } }