From 53eb6c31a36795765953a713a9849cdd21abc7e1 Mon Sep 17 00:00:00 2001 From: Mihail Date: Fri, 16 Oct 2015 12:36:26 +0300 Subject: [PATCH] add migration for details and details_crosses triggers --- common/config/main-local.php | 9 ++++++++- console/migrations/m151013_062829_deletePrefixFunction.php | 17 +++++++++-------- console/migrations/m151016_080952_editDetailsCrossesTrigger.php | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ console/migrations/m151016_090927_editDetailsTrigger.php | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 177 insertions(+), 9 deletions(-) create mode 100644 console/migrations/m151016_080952_editDetailsCrossesTrigger.php create mode 100644 console/migrations/m151016_090927_editDetailsTrigger.php diff --git a/common/config/main-local.php b/common/config/main-local.php index 5efa3f9..9e1f803 100644 --- a/common/config/main-local.php +++ b/common/config/main-local.php @@ -2,7 +2,6 @@ return [ 'components' => [ 'db' => [ - //'class' => 'yii\db\Connection', 'class' => 'backend\components\base\CustomDbConnection', 'dsn' => 'mysql:host=195.248.225.150;dbname=italautocomua', 'username' => 'italautocomua', @@ -10,6 +9,14 @@ return [ 'charset' => 'utf8', 'tablePrefix' => 'w_', ], + 'full_privileges_db' => [ + 'class' => 'backend\components\base\CustomDbConnection', + 'dsn' => 'mysql:host=195.248.225.150;dbname=italautocomua', + 'username' => 'percona', + 'password' => 'PpvSuMGEnLr4UKnVGUZPRa5wPCHF98Jf', + 'charset' => 'utf8', + 'tablePrefix' => 'w_', + ], 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', diff --git a/console/migrations/m151013_062829_deletePrefixFunction.php b/console/migrations/m151013_062829_deletePrefixFunction.php index fb7cc1d..f109afa 100644 --- a/console/migrations/m151013_062829_deletePrefixFunction.php +++ b/console/migrations/m151013_062829_deletePrefixFunction.php @@ -10,9 +10,10 @@ use yii\db\Migration; */ class m151013_062829_deletePrefixFunction extends Migration { + public function safeUp() { - $find_prefix = <<< SQL + $find_prefix = <<< MySQL CREATE FUNCTION FindPrefix(p_importer_id int, p_brand VARCHAR(100)) RETURNS VARCHAR(50) BEGIN DECLARE _prefix varchar(10); @@ -21,9 +22,9 @@ class m151013_062829_deletePrefixFunction extends Migration RETURN (_prefix); END -SQL; +MySQL; - $delete_prefix = <<< SQL + $delete_prefix = <<< MySQL CREATE FUNCTION DeletePrefix(p_articul VARCHAR(150), p_importer_id int, p_brand VARCHAR(100)) RETURNS VARCHAR(150) BEGIN DECLARE _articul varchar(10); @@ -31,7 +32,7 @@ SQL; select substring(p_articul, LENGTH( FindPrefix( p_importer_id, p_brand ) ) + 1 ) into _articul; RETURN (_articul); END -SQL; +MySQL; $this->execute($find_prefix); $this->execute($delete_prefix); @@ -41,13 +42,13 @@ SQL; public function safedown() { - $find_prefix = <<< SQL + $find_prefix = <<< MySQL drop FUNCTION FindPrefix; -SQL; +MySQL; - $delete_prefix = <<< SQL + $delete_prefix = <<< MySQL drop FUNCTION DeletePrefix; -SQL; +MySQL; $this->execute($find_prefix); $this->execute($delete_prefix); diff --git a/console/migrations/m151016_080952_editDetailsCrossesTrigger.php b/console/migrations/m151016_080952_editDetailsCrossesTrigger.php new file mode 100644 index 0000000..c923794 --- /dev/null +++ b/console/migrations/m151016_080952_editDetailsCrossesTrigger.php @@ -0,0 +1,80 @@ +db = 'full_privileges_db'; + parent::init(); + } + + public function safeUp() + { + $drop_trigger = 'Drop trigger if exists w_details_crosses'; + + $before_insert_trigger = <<< MySQL + CREATE DEFINER=`root`@`localhost` TRIGGER `w_details_crosses_before_insert` BEFORE INSERT ON `w_details_crosses` + FOR EACH ROW BEGIN + DECLARE vBrand varchar(150); + SET vBrand = ''; + + + SELECT to_brand INTO vBrand from w_brands_replace where from_brand = NEW.BRAND; + + IF vBrand = '' or vBrand = NULL then + insert ignore into w_brands (BRAND) values(NEW.BRAND); + else + SET NEW.BRAND = vBrand; + end if; + + SET vBrand = ''; + + + SELECT to_brand INTO vBrand from w_brands_replace where from_brand = NEW.CROSS_BRAND; + + IF vBrand = '' or vBrand = NULL then + insert ignore into w_brands (BRAND) values(NEW.CROSS_BRAND); + else + SET NEW.CROSS_BRAND = vBrand; + end if; + + insert ignore into `w_details_description`(`name`, `brand`) + values (NEW.`ARTICLE`,NEW.`BRAND`),(NEW.`CROSS_ARTICLE`,NEW.`CROSS_BRAND`); + END +MySQL; + + $this->execute($drop_trigger); + $this->execute($before_insert_trigger); + + } + + public function safedown() + { + // вернем все как было + $drop_trigger = 'Drop trigger if exists w_details_crosses_before_insert'; + + $before_insert_trigger = <<< MySQL + CREATE DEFINER=`italautocomua`@`localhost` TRIGGER `w_details_crosses` BEFORE INSERT ON `w_details_crosses` + FOR EACH ROW BEGIN + insert ignore into `w_details_description`(`name`, `brand`) + values (NEW.`ARTICLE`,NEW.`BRAND`),(NEW.`CROSS_ARTICLE`,NEW.`CROSS_BRAND`); + END +MySQL; + + $this->execute($drop_trigger); + $this->execute($before_insert_trigger); + + + } + +} diff --git a/console/migrations/m151016_090927_editDetailsTrigger.php b/console/migrations/m151016_090927_editDetailsTrigger.php new file mode 100644 index 0000000..70abd57 --- /dev/null +++ b/console/migrations/m151016_090927_editDetailsTrigger.php @@ -0,0 +1,80 @@ +db = 'full_privileges_db'; + parent::init(); + } + + public function safeUp() + { + $drop_trigger = 'Drop trigger if exists w_details'; + + $before_insert_trigger = <<< MySQL + CREATE DEFINER=`root`@`localhost` TRIGGER `w_details_before_insert` BEFORE INSERT ON `w_details` + FOR EACH ROW BEGIN + DECLARE vBrand varchar(150); + DECLARE vArticle varchar(100); + SET vBrand = ''; + SET vArticle = ''; + + SELECT to_brand INTO vBrand from w_brands_replace where from_brand = NEW.BRAND; + + IF vBrand = '' or vBrand = NULL then + insert ignore into w_brands (BRAND) values(NEW.BRAND); + else + SET NEW.BRAND = vBrand; + end if; + + SET vBrand = ''; + + SELECT to_name, to_brand INTO vArticle, vBrand from w_details_replace where from_name = NEW.ARTICLE AND from_brand = NEW.BRAND; + + IF vArticle != '' AND vArticle != NULL then + SET NEW.BRAND = vBrand; + SET NEW.ARTICLE = vArticle; + end if; + + INSERT INTO `w_details_description`(`name`, `brand`, `supplier_description`, `article`) + values (NEW.`ARTICLE`,NEW.`BRAND`,NEW.`DESCR`,NEW.`FULL_ARTICLE`) + on duplicate key update `supplier_description` = if (`supplier_description` = '',values(`supplier_description`),`supplier_description`); + END +MySQL; + + $this->execute($drop_trigger); + $this->execute($before_insert_trigger); + + } + + public function safedown() + { + // вернем все как было + $drop_trigger = 'Drop trigger if exists w_details_before_insert'; + + $before_insert_trigger = <<< MySQL + CREATE DEFINER=`italautocomua`@`localhost` TRIGGER `w_details` BEFORE INSERT ON `w_details` + FOR EACH ROW BEGIN + INSERT INTO `w_details_description`(`name`, `brand`, `supplier_description`, `article`) + values (NEW.`ARTICLE`,NEW.`BRAND`,NEW.`DESCR`,NEW.`FULL_ARTICLE`) + on duplicate key update `supplier_description` = if (`supplier_description` = '',values(`supplier_description`),`supplier_description`); + END +MySQL; + + $this->execute($drop_trigger); + $this->execute($before_insert_trigger); + + } +} -- libgit2 0.21.4