Commit 4d44bf04b3ff68454553090084fabf392afe621e
1 parent
7776ca75
add migration for details and details_crosses triggers
Showing
4 changed files
with
177 additions
and
9 deletions
Show diff stats
common/config/main-local.php
| @@ -2,7 +2,6 @@ | @@ -2,7 +2,6 @@ | ||
| 2 | return [ | 2 | return [ |
| 3 | 'components' => [ | 3 | 'components' => [ |
| 4 | 'db' => [ | 4 | 'db' => [ |
| 5 | - //'class' => 'yii\db\Connection', | ||
| 6 | 'class' => 'backend\components\base\CustomDbConnection', | 5 | 'class' => 'backend\components\base\CustomDbConnection', |
| 7 | 'dsn' => 'mysql:host=195.248.225.150;dbname=italautocomua', | 6 | 'dsn' => 'mysql:host=195.248.225.150;dbname=italautocomua', |
| 8 | 'username' => 'italautocomua', | 7 | 'username' => 'italautocomua', |
| @@ -10,6 +9,14 @@ return [ | @@ -10,6 +9,14 @@ return [ | ||
| 10 | 'charset' => 'utf8', | 9 | 'charset' => 'utf8', |
| 11 | 'tablePrefix' => 'w_', | 10 | 'tablePrefix' => 'w_', |
| 12 | ], | 11 | ], |
| 12 | + 'full_privileges_db' => [ | ||
| 13 | + 'class' => 'backend\components\base\CustomDbConnection', | ||
| 14 | + 'dsn' => 'mysql:host=195.248.225.150;dbname=italautocomua', | ||
| 15 | + 'username' => 'percona', | ||
| 16 | + 'password' => 'PpvSuMGEnLr4UKnVGUZPRa5wPCHF98Jf', | ||
| 17 | + 'charset' => 'utf8', | ||
| 18 | + 'tablePrefix' => 'w_', | ||
| 19 | + ], | ||
| 13 | 'mailer' => [ | 20 | 'mailer' => [ |
| 14 | 'class' => 'yii\swiftmailer\Mailer', | 21 | 'class' => 'yii\swiftmailer\Mailer', |
| 15 | 'viewPath' => '@common/mail', | 22 | 'viewPath' => '@common/mail', |
console/migrations/m151013_062829_deletePrefixFunction.php
| @@ -10,9 +10,10 @@ use yii\db\Migration; | @@ -10,9 +10,10 @@ use yii\db\Migration; | ||
| 10 | */ | 10 | */ |
| 11 | class m151013_062829_deletePrefixFunction extends Migration | 11 | class m151013_062829_deletePrefixFunction extends Migration |
| 12 | { | 12 | { |
| 13 | + | ||
| 13 | public function safeUp() | 14 | public function safeUp() |
| 14 | { | 15 | { |
| 15 | - $find_prefix = <<< SQL | 16 | + $find_prefix = <<< MySQL |
| 16 | CREATE FUNCTION FindPrefix(p_importer_id int, p_brand VARCHAR(100)) RETURNS VARCHAR(50) | 17 | CREATE FUNCTION FindPrefix(p_importer_id int, p_brand VARCHAR(100)) RETURNS VARCHAR(50) |
| 17 | BEGIN | 18 | BEGIN |
| 18 | DECLARE _prefix varchar(10); | 19 | DECLARE _prefix varchar(10); |
| @@ -21,9 +22,9 @@ class m151013_062829_deletePrefixFunction extends Migration | @@ -21,9 +22,9 @@ class m151013_062829_deletePrefixFunction extends Migration | ||
| 21 | 22 | ||
| 22 | RETURN (_prefix); | 23 | RETURN (_prefix); |
| 23 | END | 24 | END |
| 24 | -SQL; | 25 | +MySQL; |
| 25 | 26 | ||
| 26 | - $delete_prefix = <<< SQL | 27 | + $delete_prefix = <<< MySQL |
| 27 | CREATE FUNCTION DeletePrefix(p_articul VARCHAR(150), p_importer_id int, p_brand VARCHAR(100)) RETURNS VARCHAR(150) | 28 | CREATE FUNCTION DeletePrefix(p_articul VARCHAR(150), p_importer_id int, p_brand VARCHAR(100)) RETURNS VARCHAR(150) |
| 28 | BEGIN | 29 | BEGIN |
| 29 | DECLARE _articul varchar(10); | 30 | DECLARE _articul varchar(10); |
| @@ -31,7 +32,7 @@ SQL; | @@ -31,7 +32,7 @@ SQL; | ||
| 31 | select substring(p_articul, LENGTH( FindPrefix( p_importer_id, p_brand ) ) + 1 ) into _articul; | 32 | select substring(p_articul, LENGTH( FindPrefix( p_importer_id, p_brand ) ) + 1 ) into _articul; |
| 32 | RETURN (_articul); | 33 | RETURN (_articul); |
| 33 | END | 34 | END |
| 34 | -SQL; | 35 | +MySQL; |
| 35 | 36 | ||
| 36 | $this->execute($find_prefix); | 37 | $this->execute($find_prefix); |
| 37 | $this->execute($delete_prefix); | 38 | $this->execute($delete_prefix); |
| @@ -41,13 +42,13 @@ SQL; | @@ -41,13 +42,13 @@ SQL; | ||
| 41 | public function safedown() | 42 | public function safedown() |
| 42 | { | 43 | { |
| 43 | 44 | ||
| 44 | - $find_prefix = <<< SQL | 45 | + $find_prefix = <<< MySQL |
| 45 | drop FUNCTION FindPrefix; | 46 | drop FUNCTION FindPrefix; |
| 46 | -SQL; | 47 | +MySQL; |
| 47 | 48 | ||
| 48 | - $delete_prefix = <<< SQL | 49 | + $delete_prefix = <<< MySQL |
| 49 | drop FUNCTION DeletePrefix; | 50 | drop FUNCTION DeletePrefix; |
| 50 | -SQL; | 51 | +MySQL; |
| 51 | 52 | ||
| 52 | $this->execute($find_prefix); | 53 | $this->execute($find_prefix); |
| 53 | $this->execute($delete_prefix); | 54 | $this->execute($delete_prefix); |
console/migrations/m151016_080952_editDetailsCrossesTrigger.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\db\Migration; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * Class m151016_080952_editDetailsCrossesTrigger | ||
| 7 | + * заменим существующий триггер на новый и переименуем его на более информативное имя | ||
| 8 | + * с w_details_crosses на w_details_crosses_before_insert | ||
| 9 | + * существующая функциональность сохраняется | ||
| 10 | + * добавляется замена брендов и вставка новых брендов в таблицу w_brand | ||
| 11 | + */ | ||
| 12 | +class m151016_080952_editDetailsCrossesTrigger extends Migration | ||
| 13 | +{ | ||
| 14 | + public function init() | ||
| 15 | + { | ||
| 16 | + // используем специальное подключение с супер правами | ||
| 17 | + $this->db = 'full_privileges_db'; | ||
| 18 | + parent::init(); | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + public function safeUp() | ||
| 22 | + { | ||
| 23 | + $drop_trigger = 'Drop trigger if exists w_details_crosses'; | ||
| 24 | + | ||
| 25 | + $before_insert_trigger = <<< MySQL | ||
| 26 | + CREATE DEFINER=`root`@`localhost` TRIGGER `w_details_crosses_before_insert` BEFORE INSERT ON `w_details_crosses` | ||
| 27 | + FOR EACH ROW BEGIN | ||
| 28 | + DECLARE vBrand varchar(150); | ||
| 29 | + SET vBrand = ''; | ||
| 30 | + | ||
| 31 | + | ||
| 32 | + SELECT to_brand INTO vBrand from w_brands_replace where from_brand = NEW.BRAND; | ||
| 33 | + | ||
| 34 | + IF vBrand = '' or vBrand = NULL then | ||
| 35 | + insert ignore into w_brands (BRAND) values(NEW.BRAND); | ||
| 36 | + else | ||
| 37 | + SET NEW.BRAND = vBrand; | ||
| 38 | + end if; | ||
| 39 | + | ||
| 40 | + SET vBrand = ''; | ||
| 41 | + | ||
| 42 | + | ||
| 43 | + SELECT to_brand INTO vBrand from w_brands_replace where from_brand = NEW.CROSS_BRAND; | ||
| 44 | + | ||
| 45 | + IF vBrand = '' or vBrand = NULL then | ||
| 46 | + insert ignore into w_brands (BRAND) values(NEW.CROSS_BRAND); | ||
| 47 | + else | ||
| 48 | + SET NEW.CROSS_BRAND = vBrand; | ||
| 49 | + end if; | ||
| 50 | + | ||
| 51 | + insert ignore into `w_details_description`(`name`, `brand`) | ||
| 52 | + values (NEW.`ARTICLE`,NEW.`BRAND`),(NEW.`CROSS_ARTICLE`,NEW.`CROSS_BRAND`); | ||
| 53 | + END | ||
| 54 | +MySQL; | ||
| 55 | + | ||
| 56 | + $this->execute($drop_trigger); | ||
| 57 | + $this->execute($before_insert_trigger); | ||
| 58 | + | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + public function safedown() | ||
| 62 | + { | ||
| 63 | + // вернем все как было | ||
| 64 | + $drop_trigger = 'Drop trigger if exists w_details_crosses_before_insert'; | ||
| 65 | + | ||
| 66 | + $before_insert_trigger = <<< MySQL | ||
| 67 | + CREATE DEFINER=`italautocomua`@`localhost` TRIGGER `w_details_crosses` BEFORE INSERT ON `w_details_crosses` | ||
| 68 | + FOR EACH ROW BEGIN | ||
| 69 | + insert ignore into `w_details_description`(`name`, `brand`) | ||
| 70 | + values (NEW.`ARTICLE`,NEW.`BRAND`),(NEW.`CROSS_ARTICLE`,NEW.`CROSS_BRAND`); | ||
| 71 | + END | ||
| 72 | +MySQL; | ||
| 73 | + | ||
| 74 | + $this->execute($drop_trigger); | ||
| 75 | + $this->execute($before_insert_trigger); | ||
| 76 | + | ||
| 77 | + | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | +} |
console/migrations/m151016_090927_editDetailsTrigger.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\db\Migration; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * Class m151016_090927_editDetailsTrigger | ||
| 7 | + * заменим существующий триггер на новый и переименуем его на более информативное имя | ||
| 8 | + * с w_details на w_details_before_insert | ||
| 9 | + * существующая функциональность сохраняется | ||
| 10 | + * добавляется замена брендов и вставка новых брендов в таблицу w_brand, | ||
| 11 | + * а также поиск и замена налогов товаров по таблице w_details_replace | ||
| 12 | + */ | ||
| 13 | +class m151016_090927_editDetailsTrigger extends Migration | ||
| 14 | +{ | ||
| 15 | + public function init() | ||
| 16 | + { | ||
| 17 | + // используем специальное подключение с супер правами | ||
| 18 | + $this->db = 'full_privileges_db'; | ||
| 19 | + parent::init(); | ||
| 20 | + } | ||
| 21 | + | ||
| 22 | + public function safeUp() | ||
| 23 | + { | ||
| 24 | + $drop_trigger = 'Drop trigger if exists w_details'; | ||
| 25 | + | ||
| 26 | + $before_insert_trigger = <<< MySQL | ||
| 27 | + CREATE DEFINER=`root`@`localhost` TRIGGER `w_details_before_insert` BEFORE INSERT ON `w_details` | ||
| 28 | + FOR EACH ROW BEGIN | ||
| 29 | + DECLARE vBrand varchar(150); | ||
| 30 | + DECLARE vArticle varchar(100); | ||
| 31 | + SET vBrand = ''; | ||
| 32 | + SET vArticle = ''; | ||
| 33 | + | ||
| 34 | + SELECT to_brand INTO vBrand from w_brands_replace where from_brand = NEW.BRAND; | ||
| 35 | + | ||
| 36 | + IF vBrand = '' or vBrand = NULL then | ||
| 37 | + insert ignore into w_brands (BRAND) values(NEW.BRAND); | ||
| 38 | + else | ||
| 39 | + SET NEW.BRAND = vBrand; | ||
| 40 | + end if; | ||
| 41 | + | ||
| 42 | + SET vBrand = ''; | ||
| 43 | + | ||
| 44 | + SELECT to_name, to_brand INTO vArticle, vBrand from w_details_replace where from_name = NEW.ARTICLE AND from_brand = NEW.BRAND; | ||
| 45 | + | ||
| 46 | + IF vArticle != '' AND vArticle != NULL then | ||
| 47 | + SET NEW.BRAND = vBrand; | ||
| 48 | + SET NEW.ARTICLE = vArticle; | ||
| 49 | + end if; | ||
| 50 | + | ||
| 51 | + INSERT INTO `w_details_description`(`name`, `brand`, `supplier_description`, `article`) | ||
| 52 | + values (NEW.`ARTICLE`,NEW.`BRAND`,NEW.`DESCR`,NEW.`FULL_ARTICLE`) | ||
| 53 | + on duplicate key update `supplier_description` = if (`supplier_description` = '',values(`supplier_description`),`supplier_description`); | ||
| 54 | + END | ||
| 55 | +MySQL; | ||
| 56 | + | ||
| 57 | + $this->execute($drop_trigger); | ||
| 58 | + $this->execute($before_insert_trigger); | ||
| 59 | + | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + public function safedown() | ||
| 63 | + { | ||
| 64 | + // вернем все как было | ||
| 65 | + $drop_trigger = 'Drop trigger if exists w_details_before_insert'; | ||
| 66 | + | ||
| 67 | + $before_insert_trigger = <<< MySQL | ||
| 68 | + CREATE DEFINER=`italautocomua`@`localhost` TRIGGER `w_details` BEFORE INSERT ON `w_details` | ||
| 69 | + FOR EACH ROW BEGIN | ||
| 70 | + INSERT INTO `w_details_description`(`name`, `brand`, `supplier_description`, `article`) | ||
| 71 | + values (NEW.`ARTICLE`,NEW.`BRAND`,NEW.`DESCR`,NEW.`FULL_ARTICLE`) | ||
| 72 | + on duplicate key update `supplier_description` = if (`supplier_description` = '',values(`supplier_description`),`supplier_description`); | ||
| 73 | + END | ||
| 74 | +MySQL; | ||
| 75 | + | ||
| 76 | + $this->execute($drop_trigger); | ||
| 77 | + $this->execute($before_insert_trigger); | ||
| 78 | + | ||
| 79 | + } | ||
| 80 | +} |