81 lines
3.0 KiB
PHP
81 lines
3.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Phinx\Seed\AbstractSeed;
|
|
|
|
/**
|
|
* Seed dimostrativo del motore generico.
|
|
*
|
|
* - Assicura che le routine legacy esistenti abbiano engine = 0 (nessun impatto).
|
|
* - Crea una routine di esempio "merge_D_F_H_into_J" con engine = 1
|
|
* e il relativo step: unisce le colonne D, F, H nella colonna J.
|
|
*
|
|
* Nota: filename per le routine engine punta al file motore condiviso _engine.php,
|
|
* così apply_routine.php lo risolve correttamente anche se il flusso invia il filename.
|
|
*/
|
|
final class RoutineEngineSeed extends AbstractSeed
|
|
{
|
|
public function run(): void
|
|
{
|
|
$pdo = $this->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]);
|
|
}
|
|
}
|