Passed
Push — master ( bd88c8...741219 )
by
unknown
14:15 queued 05:25
created

Version20240127000400::getDescription()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
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 Version20240127000400 extends AbstractMigrationChamilo
13
{
14
    public function getDescription(): string
15
    {
16
        return 'Add resource_node_id, FK and UNIQUE index to gradebook_certificate';
17
    }
18
19
    public function up(Schema $schema): void
20
    {
21
        $this->addSql('SET FOREIGN_KEY_CHECKS=0;');
22
        $this->addSql('SET UNIQUE_CHECKS=0;');
23
24
        if ($schema->hasTable('gradebook_certificate') && $schema->hasTable('resource_node')) {
25
            $table = $schema->getTable('gradebook_certificate');
26
27
            if (!$table->hasColumn('resource_node_id')) {
28
                $this->addSql('ALTER TABLE gradebook_certificate ADD resource_node_id INT DEFAULT NULL;');
29
            }
30
31
            $this->addSql('ALTER TABLE gradebook_certificate ADD CONSTRAINT FK_650669D1BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE;');
32
33
            if (!$table->hasIndex('UNIQ_650669D1BAD783F')) {
34
                $this->addSql('CREATE UNIQUE INDEX UNIQ_650669D1BAD783F ON gradebook_certificate (resource_node_id);');
35
            }
36
        } else {
37
            error_log('Table gradebook_certificate or resource_node not found. Skipping changes.');
38
        }
39
40
        $this->addSql('SET UNIQUE_CHECKS=1;');
41
        $this->addSql('SET FOREIGN_KEY_CHECKS=1;');
42
    }
43
44
    public function down(Schema $schema): void
45
    {
46
        $this->addSql('SET FOREIGN_KEY_CHECKS=0;');
47
        $this->addSql('SET UNIQUE_CHECKS=0;');
48
49
        if ($schema->hasTable('gradebook_certificate')) {
50
            $table = $schema->getTable('gradebook_certificate');
51
52
            $this->addSql('ALTER TABLE gradebook_certificate DROP FOREIGN KEY FK_650669D1BAD783F;');
53
54
            if ($table->hasIndex('UNIQ_650669D1BAD783F')) {
55
                $this->addSql('DROP INDEX UNIQ_650669D1BAD783F ON gradebook_certificate;');
56
            }
57
58
            if ($table->hasColumn('resource_node_id')) {
59
                $this->addSql('ALTER TABLE gradebook_certificate DROP COLUMN resource_node_id;');
60
            }
61
        }
62
63
        $this->addSql('SET UNIQUE_CHECKS=1;');
64
        $this->addSql('SET FOREIGN_KEY_CHECKS=1;');
65
    }
66
}
67