Completed
Push — master ( 1ecaac...3f7ce9 )
by
unknown
01:24 queued 45s
created

Version20240811221700::down()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 11
c 1
b 0
f 1
nc 1
nop 1
dl 0
loc 14
rs 9.9
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
6
7
use Doctrine\DBAL\Schema\Schema;
8
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
9
10
final class Version20240811221700 extends AbstractMigrationChamilo
11
{
12
    public function getDescription(): string
13
    {
14
        return 'Migration to create LTI-related tables and add necessary foreign keys and unique constraints.';
15
    }
16
17
    public function up(Schema $schema): void
18
    {
19
        $this->addSql('
20
            CREATE TABLE IF NOT EXISTS lti_token (
21
                id INT AUTO_INCREMENT NOT NULL,
22
                tool_id INT DEFAULT NULL,
23
                scope LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\',
24
                hash VARCHAR(255) NOT NULL,
25
                created_at INT NOT NULL,
26
                expires_at INT NOT NULL,
27
                INDEX IDX_EA71C468F7B22CC (tool_id),
28
                PRIMARY KEY(id)
29
            ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC;
30
        ');
31
32
        $this->addSql('
33
            CREATE TABLE IF NOT EXISTS lti_lineitem (
34
                id INT AUTO_INCREMENT NOT NULL,
35
                tool_id INT NOT NULL,
36
                evaluation INT NOT NULL,
37
                resource_id VARCHAR(255) DEFAULT NULL,
38
                tag VARCHAR(255) DEFAULT NULL,
39
                start_date DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\',
40
                end_date DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\',
41
                INDEX IDX_5C76B75D8F7B22CC (tool_id),
42
                UNIQUE INDEX UNIQ_5C76B75D1323A575 (evaluation),
43
                PRIMARY KEY(id)
44
            ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC;
45
        ');
46
47
        $this->addSql('
48
            CREATE TABLE IF NOT EXISTS lti_platform (
49
                id INT AUTO_INCREMENT NOT NULL,
50
                public_key LONGTEXT NOT NULL,
51
                kid VARCHAR(255) NOT NULL,
52
                private_key LONGTEXT NOT NULL,
53
                PRIMARY KEY(id)
54
            ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC;
55
        ');
56
57
        $this->addSql('
58
            CREATE TABLE IF NOT EXISTS lti_external_tool (
59
                id INT AUTO_INCREMENT NOT NULL,
60
                resource_node_id INT DEFAULT NULL,
61
                c_id INT DEFAULT NULL,
62
                gradebook_eval_id INT DEFAULT NULL,
63
                parent_id INT DEFAULT NULL,
64
                title VARCHAR(255) NOT NULL,
65
                description LONGTEXT DEFAULT NULL,
66
                launch_url VARCHAR(255) NOT NULL,
67
                consumer_key VARCHAR(255) DEFAULT NULL,
68
                shared_secret VARCHAR(255) DEFAULT NULL,
69
                custom_params LONGTEXT DEFAULT NULL,
70
                active_deep_linking TINYINT(1) DEFAULT 0 NOT NULL,
71
                privacy LONGTEXT DEFAULT NULL,
72
                client_id VARCHAR(255) DEFAULT NULL,
73
                login_url VARCHAR(255) DEFAULT NULL,
74
                redirect_url VARCHAR(255) DEFAULT NULL,
75
                advantage_services LONGTEXT DEFAULT NULL COMMENT \'(DC2Type:json)\',
76
                version VARCHAR(255) DEFAULT \'lti1p1\' NOT NULL,
77
                launch_presentation LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\',
78
                replacement_params LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\',
79
                UNIQUE INDEX UNIQ_DB0E04E41BAD783F (resource_node_id),
80
                INDEX IDX_DB0E04E491D79BD3 (c_id),
81
                INDEX IDX_DB0E04E482F80D8B (gradebook_eval_id),
82
                INDEX IDX_DB0E04E4727ACA70 (parent_id),
83
                PRIMARY KEY(id)
84
            ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC;
85
        ');
86
87
        $this->addSql('
88
            ALTER TABLE lti_token
89
            ADD CONSTRAINT FK_EA71C468F7B22CC FOREIGN KEY (tool_id)
90
            REFERENCES lti_external_tool (id) ON DELETE CASCADE;
91
        ');
92
93
        $this->addSql('
94
            ALTER TABLE lti_external_tool
95
            ADD CONSTRAINT FK_DB0E04E41BAD783F FOREIGN KEY (resource_node_id)
96
            REFERENCES resource_node (id) ON DELETE CASCADE;
97
        ');
98
99
        $this->addSql('
100
            ALTER TABLE lti_external_tool
101
            ADD CONSTRAINT FK_DB0E04E491D79BD3 FOREIGN KEY (c_id)
102
            REFERENCES course (id);
103
        ');
104
105
        $this->addSql('
106
            ALTER TABLE lti_external_tool
107
            ADD CONSTRAINT FK_DB0E04E482F80D8B FOREIGN KEY (gradebook_eval_id)
108
            REFERENCES gradebook_evaluation (id) ON DELETE SET NULL;
109
        ');
110
111
        $this->addSql('
112
            ALTER TABLE lti_external_tool
113
            ADD CONSTRAINT FK_DB0E04E4727ACA70 FOREIGN KEY (parent_id)
114
            REFERENCES lti_external_tool (id);
115
        ');
116
117
        $this->addSql('
118
            ALTER TABLE lti_lineitem
119
            ADD CONSTRAINT FK_5C76B75D8F7B22CC FOREIGN KEY (tool_id)
120
            REFERENCES lti_external_tool (id) ON DELETE CASCADE;
121
        ');
122
123
        $this->addSql('
124
            ALTER TABLE lti_lineitem
125
            ADD CONSTRAINT FK_5C76B75D1323A575 FOREIGN KEY (evaluation)
126
            REFERENCES gradebook_evaluation (id) ON DELETE CASCADE;
127
        ');
128
    }
129
130
    public function down(Schema $schema): void
131
    {
132
        $this->addSql('ALTER TABLE lti_lineitem DROP FOREIGN KEY FK_5C76B75D8F7B22CC;');
133
        $this->addSql('ALTER TABLE lti_lineitem DROP FOREIGN KEY FK_5C76B75D1323A575;');
134
        $this->addSql('ALTER TABLE lti_token DROP FOREIGN KEY FK_EA71C468F7B22CC;');
135
        $this->addSql('ALTER TABLE lti_external_tool DROP FOREIGN KEY FK_DB0E04E41BAD783F;');
136
        $this->addSql('ALTER TABLE lti_external_tool DROP FOREIGN KEY FK_DB0E04E491D79BD3;');
137
        $this->addSql('ALTER TABLE lti_external_tool DROP FOREIGN KEY FK_DB0E04E482F80D8B;');
138
        $this->addSql('ALTER TABLE lti_external_tool DROP FOREIGN KEY FK_DB0E04E4727ACA70;');
139
140
        $this->addSql('DROP TABLE IF EXISTS lti_platform;');
141
        $this->addSql('DROP TABLE IF EXISTS lti_lineitem;');
142
        $this->addSql('DROP TABLE IF EXISTS lti_token;');
143
        $this->addSql('DROP TABLE IF EXISTS lti_external_tool;');
144
    }
145
}
146