indexColumns[] = $columnName; $this->tablePrefix = MAUTIC_TABLE_PREFIX; $this->columnName = $columnName; } public function getTableName(): string { return $this->tablePrefix.$this->tableName; } public function getColumnName(): string { return $this->columnName; } public function addIndexColumn(string $indexColumn): void { $this->indexColumns[] = $indexColumn; } public function setOriginalDateColumn(string $originalDateColumn, string $timeUnit): void { $this->originalDateColumn = $originalDateColumn; $this->timeUnit = $timeUnit; } public function getOriginalDateColumn(): ?string { return $this->originalDateColumn; } public function getTimeUnit(): string { return $this->timeUnit; } public function getAlterTableSql(): string { return "ALTER TABLE {$this->getTableName()} ADD {$this->getColumnName()} {$this->getColumnDefinition()}; ALTER TABLE {$this->getTableName()} ADD INDEX `{$this->getIndexName()}`({$this->indexColumnsToString()})"; } public function getColumnDefinition(): string { return "{$this->columnType} AS ({$this->as}) COMMENT '(DC2Type:generated)'"; } public function getIndexColumns(): array { return $this->indexColumns; } public function getIndexName(): string { return $this->tablePrefix.$this->indexColumnsToString('_'); } private function indexColumnsToString(string $separator = ', '): string { return implode($separator, $this->indexColumns); } }