protected/modules/dictionary/install/migrations/m000000_000000_dictionary_base.php

Summary

Maintainability
B
4 hrs
Test Coverage
<?php

/**
 * Dictionary install migration
 * Класс миграций для модуля Dictionary:
 *
 * @category YupeMigration
 * @package  yupe.modules.dictionary.install.migrations
 * @author   YupeTeam <support@yupe.ru>
 * @license  BSD https://raw.github.com/yupe/yupe/master/LICENSE
 * @link     https://yupe.ru
 *
 **/
class m000000_000000_dictionary_base extends yupe\components\DbMigration
{

    public function safeUp()
    {
        $this->createTable(
            '{{dictionary_dictionary_group}}',
            [
                'id'             => 'pk',
                'code'           => 'varchar(100) NOT NULL',
                'name'           => "varchar(250) NOT NULL",
                'description'    => "varchar(250) NOT NULL DEFAULT ''",
                'creation_date'  => 'datetime NOT NULL',
                'update_date'    => 'datetime NOT NULL',
                'create_user_id' => 'integer DEFAULT NULL',
                'update_user_id' => 'integer DEFAULT NULL',
            ],
            $this->getOptions()
        );

        //ix
        $this->createIndex("ux_{{dictionary_dictionary_group}}_code", '{{dictionary_dictionary_group}}', "code", true);
        $this->createIndex(
            "ix_{{dictionary_dictionary_group}}_create_user_id",
            '{{dictionary_dictionary_group}}',
            "create_user_id",
            false
        );
        $this->createIndex(
            "ix_{{dictionary_dictionary_group}}_update_user_id",
            '{{dictionary_dictionary_group}}',
            "update_user_id",
            false
        );

        //fk
        $this->addForeignKey(
            "fk_{{dictionary_dictionary_group}}_create_user_id",
            '{{dictionary_dictionary_group}}',
            'create_user_id',
            '{{user_user}}',
            'id',
            'SET NULL',
            'NO ACTION'
        );
        $this->addForeignKey(
            "fk_{{dictionary_dictionary_group}}_update_user_id",
            '{{dictionary_dictionary_group}}',
            'update_user_id',
            '{{user_user}}',
            'id',
            'SET NULL',
            'NO ACTION'
        );

        /**
         * Dictionary_data
         **/
        $this->createTable(
            '{{dictionary_dictionary_data}}',
            [
                'id'             => 'pk',
                'group_id'       => 'integer NOT NULL',
                'code'           => 'varchar(100) NOT NULL',
                'name'           => 'varchar(250) NOT NULL',
                'value'          => 'varchar(250) NOT NULL',
                'description'    => "varchar(250) NOT NULL DEFAULT ''",
                'creation_date'  => 'datetime NOT NULL',
                'update_date'    => 'datetime NOT NULL',
                'create_user_id' => 'integer DEFAULT NULL',
                'update_user_id' => 'integer DEFAULT NULL',
                'status'         => "integer NOT NULL DEFAULT '1'",
            ],
            $this->getOptions()
        );

        //ix
        $this->createIndex(
            "ux_{{dictionary_dictionary_data}}_code_unique",
            '{{dictionary_dictionary_data}}',
            "code",
            true
        );
        $this->createIndex(
            "ix_{{dictionary_dictionary_data}}_group_id",
            '{{dictionary_dictionary_data}}',
            "group_id",
            false
        );
        $this->createIndex(
            "ix_{{dictionary_dictionary_data}}_create_user_id",
            '{{dictionary_dictionary_data}}',
            "create_user_id",
            false
        );
        $this->createIndex(
            "ix_{{dictionary_dictionary_data}}_update_user_id",
            '{{dictionary_dictionary_data}}',
            "update_user_id",
            false
        );
        $this->createIndex(
            "ix_{{dictionary_dictionary_data}}_status",
            '{{dictionary_dictionary_data}}',
            "status",
            false
        );

        //fk
        $this->addForeignKey(
            "fk_{{dictionary_dictionary_data}}_create_user_id",
            '{{dictionary_dictionary_data}}',
            'create_user_id',
            '{{user_user}}',
            'id',
            'SET NULL',
            'NO ACTION'
        );
        $this->addForeignKey(
            "fk_{{dictionary_dictionary_data}}_update_user_id",
            '{{dictionary_dictionary_data}}',
            'update_user_id',
            '{{user_user}}',
            'id',
            'SET NULL',
            'NO ACTION'
        );
        $this->addForeignKey(
            "fk_{{dictionary_dictionary_data}}_data_group_id",
            '{{dictionary_dictionary_data}}',
            'group_id',
            '{{dictionary_dictionary_group}}',
            'id',
            'CASCADE',
            'NO ACTION'
        );
    }

    public function safeDown()
    {
        $this->dropTableWithForeignKeys('{{dictionary_dictionary_data}}');
        $this->dropTableWithForeignKeys('{{dictionary_dictionary_group}}');
    }
}