35 private $dbSchemaWriter;
40 private $definitionAggregator;
45 private $columnTriggers;
55 private $elementHistoryFactory;
68 array $columnTriggers = [],
71 $this->dbSchemaWriter = $dbSchemaWriter;
72 $this->definitionAggregator = $definitionAggregator;
73 $this->columnTriggers = $columnTriggers;
74 $this->triggers = $triggers;
75 $this->elementHistoryFactory = $elementHistoryFactory;
101 private function setupColumnTriggers(array
$columns,
Statement $createTableStatement)
104 foreach ($this->columnTriggers as
$trigger) {
105 if (
$trigger->isApplicable((
string) $column->getOnCreate())) {
106 $elementHistory = $this->elementHistoryFactory->create([
111 $trigger->getCallback($elementHistory)
125 private function setupTableTriggers(Table
$table, Statement $createTableStatement)
127 foreach ($this->triggers as
$trigger) {
129 $elementHistory = $this->elementHistoryFactory->create([
133 $createTableStatement->addTrigger(
134 $trigger->getCallback($elementHistory)
143 public function doOperation(ElementHistory $elementHistory)
146 $table = $elementHistory->getNew();
164 $createTableStatement = $this->dbSchemaWriter
167 $elementHistory->getNew()->getResource(),
169 $table->getDiffSensitiveParams()
172 $this->setupTableTriggers(
$table, $createTableStatement);
173 $this->setupColumnTriggers(
$table->getColumns(), $createTableStatement);
175 return [$createTableStatement];
doOperation(ElementHistory $elementHistory)
__construct(DbSchemaWriterInterface $dbSchemaWriter, DefinitionAggregator $definitionAggregator, ElementHistoryFactory $elementHistoryFactory, array $columnTriggers=[], array $triggers=[])
addTrigger(callable $trigger)