Spaces:
No application file
No application file
| namespace Mautic\Migrations; | |
| use Doctrine\DBAL\Schema\Schema; | |
| use Doctrine\Migrations\Exception\SkipMigration; | |
| use Mautic\CoreBundle\Doctrine\AbstractMauticMigration; | |
| class Version20190410143658 extends AbstractMauticMigration | |
| { | |
| /** | |
| * @throws \Doctrine\DBAL\Schema\SchemaException | |
| */ | |
| public function preUp(Schema $schema): void | |
| { | |
| $newIndexName = $this->getNewIndexName(); | |
| $tableName = $this->getTableName(); | |
| $table = $schema->getTable($tableName); | |
| if (true === $table->hasIndex($newIndexName)) { | |
| throw new SkipMigration('Schema includes this migration'); | |
| } | |
| } | |
| /** | |
| * @throws \Doctrine\DBAL\Schema\SchemaException | |
| */ | |
| public function up(Schema $schema): void | |
| { | |
| $newIndexName = $this->getNewIndexName(); | |
| $tableName = $this->getTableName(); | |
| $oldIndexName = $this->getOldIndexName($tableName); | |
| $this->addSql("ALTER TABLE {$tableName} ADD INDEX {$newIndexName} (lead_id, channel, reason);"); | |
| if ($schema->getTable($tableName)->hasIndex($oldIndexName)) { | |
| $this->addSql("ALTER TABLE {$tableName} DROP INDEX {$oldIndexName};"); | |
| } | |
| } | |
| /** | |
| * @param string $tableName | |
| * | |
| * @return string | |
| */ | |
| private function getOldIndexName($tableName) | |
| { | |
| return $this->generatePropertyName($tableName, 'idx', ['lead_id']); | |
| } | |
| /** | |
| * @return string | |
| */ | |
| private function getNewIndexName() | |
| { | |
| return "{$this->prefix}leadid_reason_channel"; | |
| } | |
| /** | |
| * @return string | |
| */ | |
| private function getTableName() | |
| { | |
| return "{$this->prefix}lead_donotcontact"; | |
| } | |
| } | |