Files
ephub/migrations/Version20260914091500.php

36 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20260914091500 extends AbstractMigration
{
public function getDescription(): string
{
return 'Adds resource groups (rooms of the office, areas of the car park)';
}
public function up(Schema $schema): void
{
$this->addSql('CREATE TABLE resource_group (id INT AUTO_INCREMENT NOT NULL, type VARCHAR(255) NOT NULL, label VARCHAR(50) NOT NULL, position INT NOT NULL, svg_element_id VARCHAR(50) DEFAULT NULL, UNIQUE INDEX uniq_resource_group_label (type, label), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4');
$this->addSql('ALTER TABLE resource ADD group_id INT DEFAULT NULL');
// SET NULL rather than RESTRICT: a group is configuration describing the building, and
// removing a room must leave its desks bookable rather than blocking the delete. The
// plan falls back to drawing them without a frame.
$this->addSql('ALTER TABLE resource ADD CONSTRAINT FK_BC91F416FE54D947 FOREIGN KEY (group_id) REFERENCES resource_group (id) ON DELETE SET NULL');
$this->addSql('CREATE INDEX IDX_BC91F416FE54D947 ON resource (group_id)');
}
public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE resource DROP FOREIGN KEY FK_BC91F416FE54D947');
$this->addSql('DROP INDEX IDX_BC91F416FE54D947 ON resource');
$this->addSql('ALTER TABLE resource DROP group_id');
$this->addSql('DROP TABLE resource_group');
}
}