additional, improved transformers / skipIf to eliminate records
This commit is contained in:
@@ -8,6 +8,7 @@ use UbsCsvTransformer\ConfigurationLoader;
|
||||
use UbsCsvTransformer\MetadataExtractor;
|
||||
use UbsCsvTransformer\ColumnTransformer;
|
||||
use UbsCsvTransformer\FireflyImporter;
|
||||
use UbsCsvTransformer\RowFilter;
|
||||
|
||||
/**
|
||||
* Orchestrates the complete CSV transformation pipeline
|
||||
@@ -48,6 +49,9 @@ class TransformerEngine
|
||||
{
|
||||
$this->configLoader = $configLoader;
|
||||
$this->debugMode = $debugMode;
|
||||
if ($debugMode) {
|
||||
DebugLogger::enable();
|
||||
}
|
||||
|
||||
$config = $configLoader->getAll();
|
||||
|
||||
@@ -163,12 +167,21 @@ class TransformerEngine
|
||||
// Transform rows and collect them
|
||||
$transformedData = [];
|
||||
|
||||
/** @var array<string, mixed>|null $skipIfNode */
|
||||
$skipIfNode = $this->configLoader->get('skipIf', null);
|
||||
|
||||
foreach ($dataRows as $row) {
|
||||
// Check if maxRows reached
|
||||
if ($maxRows > 0 && $this->rowsProcessed >= $maxRows) {
|
||||
break;
|
||||
}
|
||||
|
||||
// Skip row if filter condition matches
|
||||
if ($skipIfNode !== null && RowFilter::evaluate($skipIfNode, $row)) {
|
||||
DebugLogger::log('transformer', 'Row skipped by skipIf filter', ['row' => $row]);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Transform row
|
||||
$transformedRow = $this->columnTransformer->transformRow($row);
|
||||
$transformedData[] = $transformedRow;
|
||||
|
||||
Reference in New Issue
Block a user