51 lines
2.3 KiB
PHP
Executable File
51 lines
2.3 KiB
PHP
Executable File
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Mautic\Migrations;
|
|
|
|
use Doctrine\DBAL\Schema\Schema;
|
|
use Doctrine\DBAL\Types\Types;
|
|
use Mautic\CoreBundle\Doctrine\PreUpAssertionMigration;
|
|
use Mautic\ProjectBundle\Entity\Project;
|
|
|
|
final class Version20250409150440 extends PreUpAssertionMigration
|
|
{
|
|
protected function preUpAssertions(): void
|
|
{
|
|
$this->skipAssertion(
|
|
fn (Schema $schema) => $schema->hasTable($this->getPrefixedTableName(Project::TABLE_NAME)),
|
|
'Table '.Project::TABLE_NAME.' already exists'
|
|
);
|
|
}
|
|
|
|
public function up(Schema $schema): void
|
|
{
|
|
$projectsTable = $schema->createTable($this->getPrefixedTableName(Project::TABLE_NAME));
|
|
|
|
$projectsTable->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true]);
|
|
$projectsTable->addColumn('name', Types::STRING, ['length' => 191]);
|
|
$projectsTable->addColumn('description', Types::TEXT, ['notnull' => false]);
|
|
$projectsTable->addColumn('properties', Types::JSON, ['notnull' => true]);
|
|
$projectsTable->addColumn('uuid', Types::GUID, ['notnull' => false]);
|
|
$projectsTable->addColumn('is_published', Types::BOOLEAN, ['notnull' => true]);
|
|
$projectsTable->addColumn('checked_out', Types::DATETIME_MUTABLE, ['notnull' => false]);
|
|
$projectsTable->addColumn('checked_out_by', Types::INTEGER, ['notnull' => false]);
|
|
$projectsTable->addColumn('checked_out_by_user', Types::STRING, ['length' => 191, 'notnull' => false]);
|
|
$projectsTable->addColumn('date_added', Types::DATETIME_MUTABLE, ['notnull' => false]);
|
|
$projectsTable->addColumn('created_by', Types::INTEGER, ['notnull' => false]);
|
|
$projectsTable->addColumn('created_by_user', Types::STRING, ['length' => 191, 'notnull' => false]);
|
|
$projectsTable->addColumn('date_modified', Types::DATETIME_MUTABLE, ['notnull' => false]);
|
|
$projectsTable->addColumn('modified_by', Types::INTEGER, ['notnull' => false]);
|
|
$projectsTable->addColumn('modified_by_user', Types::STRING, ['length' => 191, 'notnull' => false]);
|
|
|
|
$projectsTable->setPrimaryKey(['id']);
|
|
$projectsTable->addIndex(['name'], $this->prefix.'project_name');
|
|
}
|
|
|
|
public function down(Schema $schema): void
|
|
{
|
|
$schema->dropTable($this->getPrefixedTableName(Project::TABLE_NAME));
|
|
}
|
|
}
|