added routine engine
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
<?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]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user