<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Types\Types;
use Doctrine\Migrations\AbstractMigration;
final class Version20240207093320 extends AbstractMigration
{
public function getDescription(): string
{
return 'Create initial tables with INT id for cmcm_request and resource_id field';
}
public function up(Schema $schema): void
{
// Create process table first (referenced by other tables)
$processTable = $schema->createTable('process');
$processTable->addColumn('id', Types::STRING, ['length' => 255]);
$processTable->addColumn('process_type', Types::STRING, ['length' => 255]);
$processTable->setPrimaryKey(['id']);
// Create cmcm_request table
$cmcmRequestTable = $schema->createTable('cmcm_request');
$cmcmRequestTable->addColumn('id', Types::INTEGER, ['autoincrement' => true]);
$cmcmRequestTable->addColumn('process_id', Types::STRING, ['length' => 255]);
$cmcmRequestTable->addColumn('resource_id', Types::STRING, ['length' => 255, 'notnull' => false]);
$cmcmRequestTable->addColumn('document_id', Types::STRING, ['length' => 255, 'notnull' => false]);
$cmcmRequestTable->addColumn('created_at', Types::DATETIME_IMMUTABLE);
$cmcmRequestTable->addColumn('updated_at', Types::DATETIME_IMMUTABLE, ['notnull' => false]);
$cmcmRequestTable->addColumn('status', Types::STRING, ['length' => 255]);
$cmcmRequestTable->addColumn('title', Types::STRING, ['length' => 255, 'notnull' => false]);
$cmcmRequestTable->setPrimaryKey(['id']);
$cmcmRequestTable->addUniqueIndex(['process_id'], 'uniq_cmcm_request_process_id');
$cmcmRequestTable->addUniqueIndex(['resource_id'], 'uniq_resource_id');
$cmcmRequestTable->addForeignKeyConstraint('process', ['process_id'], ['id'], [], 'FK_258CBA37EC2F574');
// Create extranet_member_leaving_process table
$leavingProcessTable = $schema->createTable('extranet_member_leaving_process');
$leavingProcessTable->addColumn('id', Types::STRING, ['length' => 255]);
$leavingProcessTable->addColumn('leaving_at', Types::DATETIME_IMMUTABLE);
$leavingProcessTable->addColumn('leaving_reason', Types::STRING, ['length' => 255]);
$leavingProcessTable->setPrimaryKey(['id']);
$leavingProcessTable->addForeignKeyConstraint('process', ['id'], ['id'], ['onDelete' => 'CASCADE'], 'FK_1EA2C397BF396750');
}
public function down(Schema $schema): void
{
$schema->dropTable('cmcm_request');
$schema->dropTable('extranet_member_leaving_process');
$schema->dropTable('process');
}
}