<?php
declare(strict_types=1);
namespace Druidfi\Mysqldump\ObjectDumper;
use Closure;
class TablesDumper implements DumperInterface
{
private Closure $iterateTables;
private Closure $matches;
private Closure $getTableStructure;
private Closure $listValues;
private Closure $getExcludedTables;
private Closure $getNoData;
public function __construct(
Closure $iterateTables,
Closure $matches,
Closure $getTableStructure,
Closure $listValues,
Closure $getExcludedTables,
Closure $getNoData
) {
$this->iterateTables = $iterateTables;
$this->matches = $matches;
$this->getTableStructure = $getTableStructure;
$this->listValues = $listValues;
$this->getExcludedTables = $getExcludedTables;
$this->getNoData = $getNoData;
}
public function dump(): void
{
$iterate = $this->iterateTables;
$matches = $this->matches;
$struct = $this->getTableStructure;
$list = $this->listValues;
$noDataGetter = $this->getNoData;
$getExcluded = $this->getExcludedTables;
foreach ($iterate() as $table) {
$excluded = $getExcluded();
if (!empty($excluded) && $matches($table, $excluded)) {
continue;
}
$struct($table);
$list($table);
}
}
}