Passed
Pull Request — master (#5625)
by Angel Fernando Quiroz
08:09
created

Version20240702222600   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Importance

Changes 3
Bugs 1 Features 0
Metric Value
eloc 24
c 3
b 1
f 0
dl 0
loc 47
rs 10
wmc 9

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getDescription() 0 3 1
B up() 0 40 8
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
declare(strict_types=1);
6
7
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
8
9
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
10
use Doctrine\DBAL\Schema\Schema;
11
12
final class Version20240702222600 extends AbstractMigrationChamilo
13
{
14
    public function getDescription(): string
15
    {
16
        return 'Migration resource_node --* resource_file (during development)';
17
    }
18
19
    public function up(Schema $schema): void
20
    {
21
        $tblResourceFile = $schema->getTable('resource_file');
22
        $tblResourceNode = $schema->getTable('resource_node');
23
24
        if (!$tblResourceFile->hasColumn('resource_node_id')) {
25
            $this->addSql('ALTER TABLE resource_file ADD resource_node_id INT DEFAULT NULL');
26
27
            $result = $this->connection->executeQuery("SELECT id, resource_file_id FROM resource_node");
28
            $resourceNodeRows = $result->fetchAllAssociative();
29
30
            foreach ($resourceNodeRows as $resourceNodeRow) {
31
                $this->addSql(
32
                    sprintf(
33
                        "UPDATE resource_file SET resource_node_id = %d WHERE id = %d",
34
                        $resourceNodeRow['id'],
35
                        $resourceNodeRow['resource_file_id']
36
                    )
37
                );
38
            }
39
        }
40
41
        if (!$tblResourceFile->hasForeignKey('FK_83BF96AA1BAD783F')) {
42
            $this->addSql('ALTER TABLE resource_file ADD CONSTRAINT FK_83BF96AA1BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id)');
43
        }
44
45
        if (!$tblResourceFile->hasIndex('IDX_83BF96AA1BAD783F')) {
46
            $this->addSql('CREATE INDEX IDX_83BF96AA1BAD783F ON resource_file (resource_node_id)');
47
        }
48
49
        if ($tblResourceNode->hasForeignKey('FK_8A5F48FFCE6B9E84')) {
50
            $this->addSql('ALTER TABLE resource_node DROP FOREIGN KEY FK_8A5F48FFCE6B9E84');
51
        }
52
53
        if ($tblResourceNode->hasIndex('UNIQ_8A5F48FFCE6B9E84')) {
54
            $this->addSql('DROP INDEX UNIQ_8A5F48FFCE6B9E84 ON resource_node');
55
        }
56
57
        if ($tblResourceNode->hasColumn('resource_file_id')) {
58
            $this->addSql('ALTER TABLE resource_node DROP resource_file_id');
59
        }
60
    }
61
}
62