Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
1.79% covered (danger)
1.79%
1 / 56
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
CreateMessageTemplateTable
1.79% covered (danger)
1.79%
1 / 56
50.00% covered (danger)
50.00%
1 / 2
5.79
0.00% covered (danger)
0.00%
0 / 1
 up
0.00% covered (danger)
0.00%
0 / 55
0.00% covered (danger)
0.00%
0 / 1
2
 down
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace App\Database\Migrations;
4
5use CodeIgniter\Database\Migration;
6
7class CreateMessageTemplateTable extends Migration
8{
9    public function up()
10    {
11        $this->forge->addField([
12            'id' => [
13                'type'           => 'INT',
14                'constraint'     => 11,
15                'unsigned'       => true,
16                'auto_increment' => true,
17            ],
18
19            'code' => [
20                'type'       => 'VARCHAR',
21                'constraint' => 100,
22            ],
23
24            'channel' => [
25                'type'       => 'VARCHAR',
26                'constraint' => 30,
27            ],
28
29            'name' => [
30                'type'       => 'VARCHAR',
31                'constraint' => 150,
32            ],
33
34            'subject' => [
35                'type'       => 'VARCHAR',
36                'constraint' => 255,
37                'null'       => true,
38            ],
39
40            'content' => [
41                'type' => 'TEXT',
42            ],
43
44            /*
45            |--------------------------------------------------------------------------
46            | JSON schema variables
47            |--------------------------------------------------------------------------
48            */
49            'variables_schema' => [
50                'type' => 'JSON',
51                'null' => true,
52            ],
53
54            /*
55            |--------------------------------------------------------------------------
56            | STATUT METIER
57            |--------------------------------------------------------------------------
58            */
59            'is_active' => [
60                'type'    => 'TINYINT',
61                'constraint' => 1,
62                'default' => 1,
63            ],
64
65            /*
66            |--------------------------------------------------------------------------
67            | SOFT DELETE (CI4 STANDARD)
68            |--------------------------------------------------------------------------
69            */
70            'deleted_at' => [
71                'type' => 'DATETIME',
72                'null' => true,
73            ],
74
75            /*
76            |--------------------------------------------------------------------------
77            | TIMESTAMPS
78            |--------------------------------------------------------------------------
79            */
80            'created_at' => [
81                'type' => 'DATETIME',
82                'null' => true,
83            ],
84
85            'updated_at' => [
86                'type' => 'DATETIME',
87                'null' => true,
88            ],
89        ]);
90
91        /*
92        |--------------------------------------------------------------------------
93        | PRIMARY KEY
94        |--------------------------------------------------------------------------
95        */
96        $this->forge->addKey('id', true);
97
98        /*
99        |--------------------------------------------------------------------------
100        | INDEXES STRATEGIQUES
101        |--------------------------------------------------------------------------
102        */
103
104        // unicité logique métier
105        $this->forge->addUniqueKey(['code', 'channel']);
106
107        // optimisation requêtes actives
108        $this->forge->addKey(['is_active']);
109
110        // optimisation filtrage canal
111        $this->forge->addKey(['channel']);
112
113        // optimisation soft delete
114        $this->forge->addKey(['deleted_at']);
115
116        /*
117        |--------------------------------------------------------------------------
118        | CREATE TABLE
119        |--------------------------------------------------------------------------
120        */
121        $this->forge->createTable('message_template', true);
122    }
123
124    public function down()
125    {
126        $this->forge->dropTable('message_template', true);
127    }
128}