<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240520133537 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE ws_column ADD sort_order INT DEFAULT NULL');
$streams = $this->connection->fetchAllAssociative('SELECT id, creator_id FROM w_stream');
foreach ($streams as $stream) {
$creatorParams = $this->connection->fetchOne('SELECT params FROM ws_collaborator WHERE stream_id = ? AND user_id = ?', [$stream['id'], $stream['creator_id']]);
if (empty($creatorParams)) {
continue;
}
$params = unserialize($creatorParams);
if (!\is_array($params) || !isset($params['tasks']['boardColumnsOrder'])) {
continue;
}
$order = $params['tasks']['boardColumnsOrder'];
foreach ($order as $index => $columnId) {
$this->addSql('UPDATE ws_column SET sort_order = ? WHERE id = ?', [$index, $columnId]);
}
}
$collaborators = $this->connection->fetchAllAssociative('SELECT id, params FROM ws_collaborator');
foreach ($collaborators as $collaborator) {
$params = unserialize($collaborator['params']);
unset($params['tasks']['boardColumnsOrder']);
$this->addSql('UPDATE ws_collaborator SET params = ? WHERE id = ?', [serialize($params), $collaborator['id']]);
}
// @see translations `default.columns`
$defaultColumns = ['To Do', 'In Progress', 'Done'];
foreach ($defaultColumns as $index => $columnName) {
$this->addSql('UPDATE ws_column SET sort_order = ? WHERE name = ? AND sort_order IS NULL', [$index, $columnName]);
}
// Handle Complete instead of Done
$this->addSql('UPDATE ws_column SET sort_order = 2 WHERE name = "Complete" AND sort_order IS NULL');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE ws_column DROP sort_order');
}
}