<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Migration for ProcesVerval workflow: adds status, source_type, user_id, client_id, created_at, updated_at
*/
final class Version20260203120000 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add workflow fields to proces_verval table: status, source_type, user_id, client_id, created_at, updated_at';
}
public function up(Schema $schema): void
{
// Add new columns
$this->addSql('ALTER TABLE proces_verval ADD status VARCHAR(50) NOT NULL DEFAULT \'draft\'');
$this->addSql('ALTER TABLE proces_verval ADD source_type VARCHAR(20) DEFAULT NULL');
$this->addSql('ALTER TABLE proces_verval ADD user_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE proces_verval ADD client_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE proces_verval ADD created_at DATETIME DEFAULT NULL');
$this->addSql('ALTER TABLE proces_verval ADD updated_at DATETIME DEFAULT NULL');
// Add foreign keys
$this->addSql('ALTER TABLE proces_verval ADD CONSTRAINT FK_PV_USER FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE proces_verval ADD CONSTRAINT FK_PV_CLIENT FOREIGN KEY (client_id) REFERENCES client (id) ON DELETE SET NULL');
// Add indexes for performance
$this->addSql('CREATE INDEX IDX_PV_STATUS ON proces_verval (status)');
$this->addSql('CREATE INDEX IDX_PV_USER ON proces_verval (user_id)');
$this->addSql('CREATE INDEX IDX_PV_CLIENT ON proces_verval (client_id)');
// Migrate existing data: set status to 'completed' and created_at to NOW()
$this->addSql('UPDATE proces_verval SET status = \'completed\', created_at = NOW() WHERE status = \'draft\'');
}
public function down(Schema $schema): void
{
// Remove foreign keys
$this->addSql('ALTER TABLE proces_verval DROP FOREIGN KEY FK_PV_USER');
$this->addSql('ALTER TABLE proces_verval DROP FOREIGN KEY FK_PV_CLIENT');
// Remove indexes
$this->addSql('DROP INDEX IDX_PV_STATUS ON proces_verval');
$this->addSql('DROP INDEX IDX_PV_USER ON proces_verval');
$this->addSql('DROP INDEX IDX_PV_CLIENT ON proces_verval');
// Remove columns
$this->addSql('ALTER TABLE proces_verval DROP status');
$this->addSql('ALTER TABLE proces_verval DROP source_type');
$this->addSql('ALTER TABLE proces_verval DROP user_id');
$this->addSql('ALTER TABLE proces_verval DROP client_id');
$this->addSql('ALTER TABLE proces_verval DROP created_at');
$this->addSql('ALTER TABLE proces_verval DROP updated_at');
}
}