diff --git a/.env.testing b/.env.testing index b5b8726aa..299f945da 100644 --- a/.env.testing +++ b/.env.testing @@ -13,6 +13,7 @@ DB_PORT=3306 DB_DATABASE=bagisto_testing DB_USERNAME=bagisto DB_PASSWORD=secret +DB_PREFIX= BROADCAST_DRIVER=log CACHE_DRIVER=file diff --git a/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194608_add_stored_function_to_get_url_path_of_category.php b/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194608_add_stored_function_to_get_url_path_of_category.php index 72d995819..b84ecfadf 100644 --- a/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194608_add_stored_function_to_get_url_path_of_category.php +++ b/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194608_add_stored_function_to_get_url_path_of_category.php @@ -12,6 +12,8 @@ class AddStoredFunctionToGetUrlPathOfCategory extends Migration */ public function up() { + $dbPrefix = DB::getTablePrefix(); + $functionSQL = <<< SQL DROP FUNCTION IF EXISTS `get_url_path_of_category`; CREATE FUNCTION get_url_path_of_category( @@ -21,7 +23,7 @@ class AddStoredFunctionToGetUrlPathOfCategory extends Migration RETURNS VARCHAR(255) DETERMINISTIC BEGIN - + DECLARE urlPath VARCHAR(255); -- Category with id 1 is root by default IF categoryId <> 1 @@ -29,9 +31,9 @@ class AddStoredFunctionToGetUrlPathOfCategory extends Migration SELECT GROUP_CONCAT(parent_translations.slug SEPARATOR '/') INTO urlPath FROM - categories AS node, - categories AS parent - JOIN category_translations AS parent_translations ON parent.id = parent_translations.category_id + ${dbPrefix}categories AS node, + ${dbPrefix}categories AS parent + JOIN ${dbPrefix}category_translations AS parent_translations ON parent.id = parent_translations.category_id WHERE node._lft >= parent._lft AND node._rgt <= parent._rgt @@ -40,15 +42,15 @@ class AddStoredFunctionToGetUrlPathOfCategory extends Migration AND parent_translations.locale = localeCode GROUP BY node.id; - + IF urlPath IS NULL THEN - SET urlPath = (SELECT slug FROM category_translations WHERE category_translations.category_id = categoryId); + SET urlPath = (SELECT slug FROM ${dbPrefix}category_translations WHERE ${dbPrefix}category_translations.category_id = categoryId); END IF; ELSE SET urlPath = ''; END IF; - + RETURN urlPath; END; SQL; diff --git a/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194627_add_trigger_to_category_translations.php b/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194627_add_trigger_to_category_translations.php index b62a6133f..b85455a8f 100644 --- a/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194627_add_trigger_to_category_translations.php +++ b/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194627_add_trigger_to_category_translations.php @@ -2,6 +2,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Database\Migrations\Migration; +use Webkul\Category\Models\CategoryTranslation; class AddTriggerToCategoryTranslations extends Migration { @@ -15,11 +16,13 @@ class AddTriggerToCategoryTranslations extends Migration */ public function up() { + $dbPrefix = DB::getTablePrefix(); + $triggerBody = $this->getTriggerBody(); $insertTrigger = <<< SQL CREATE TRIGGER %s - BEFORE INSERT ON category_translations - FOR EACH ROW + BEFORE INSERT ON ${dbPrefix}category_translations + FOR EACH ROW BEGIN $triggerBody END; @@ -27,8 +30,8 @@ SQL; $updateTrigger = <<< SQL CREATE TRIGGER %s - BEFORE UPDATE ON category_translations - FOR EACH ROW + BEFORE UPDATE ON ${dbPrefix}category_translations + FOR EACH ROW BEGIN $triggerBody END; @@ -59,20 +62,22 @@ SQL; */ private function getTriggerBody() { + $dbPrefix = DB::getTablePrefix(); + return << 1 THEN - + SELECT GROUP_CONCAT(parent_translations.slug SEPARATOR '/') INTO parentUrlPath FROM - categories AS node, - categories AS parent - JOIN category_translations AS parent_translations ON parent.id = parent_translations.category_id + ${dbPrefix}categories AS node, + ${dbPrefix}categories AS parent + JOIN ${dbPrefix}category_translations AS parent_translations ON parent.id = parent_translations.category_id WHERE node._lft >= parent._lft AND node._rgt <= parent._rgt @@ -81,16 +86,16 @@ SQL; AND parent_translations.locale = NEW.locale GROUP BY node.id; - - IF parentUrlPath IS NULL + + IF parentUrlPath IS NULL THEN SET urlPath = NEW.slug; ELSE SET urlPath = concat(parentUrlPath, '/', NEW.slug); END IF; - + SET NEW.url_path = urlPath; - + END IF; SQL; diff --git a/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194703_add_trigger_to_categories.php b/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194703_add_trigger_to_categories.php index f58739d75..206f4c02b 100644 --- a/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194703_add_trigger_to_categories.php +++ b/packages/Webkul/Shop/src/Database/Migrations/2019_11_21_194703_add_trigger_to_categories.php @@ -16,10 +16,11 @@ class AddTriggerToCategories extends Migration public function up() { $triggerBody = $this->getTriggerBody(); + $dbPrefix = DB::getTablePrefix(); $insertTrigger = <<< SQL - CREATE TRIGGER %s - AFTER INSERT ON categories + CREATE TRIGGER %s + AFTER INSERT ON ${dbPrefix}categories FOR EACH ROW BEGIN $triggerBody @@ -27,8 +28,8 @@ class AddTriggerToCategories extends Migration SQL; $updateTrigger = <<< SQL - CREATE TRIGGER %s - AFTER UPDATE ON categories + CREATE TRIGGER %s + AFTER UPDATE ON ${dbPrefix}categories FOR EACH ROW BEGIN $triggerBody @@ -60,39 +61,41 @@ SQL; */ private function getTriggerBody(): string { + $dbPrefix = DB::getTablePrefix(); + return <<< SQL DECLARE urlPath VARCHAR(255); DECLARE localeCode VARCHAR(255); DECLARE done INT; - DECLARE curs CURSOR FOR (SELECT category_translations.locale - FROM category_translations + DECLARE curs CURSOR FOR (SELECT ${dbPrefix}category_translations.locale + FROM ${dbPrefix}category_translations WHERE category_id = NEW.id); DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; - + IF EXISTS ( SELECT * - FROM category_translations + FROM ${dbPrefix}category_translations WHERE category_id = NEW.id ) THEN - + OPEN curs; - + SET done = 0; - REPEAT + REPEAT FETCH curs INTO localeCode; - + SELECT get_url_path_of_category(NEW.id, localeCode) INTO urlPath; - - UPDATE category_translations - SET url_path = urlPath - WHERE category_translations.category_id = NEW.id; - + + UPDATE ${dbPrefix}category_translations + SET url_path = urlPath + WHERE ${dbPrefix}category_translations.category_id = NEW.id; + UNTIL done END REPEAT; - + CLOSE curs; - + END IF; SQL; } diff --git a/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_173505_alter_trigger_category_translations.php b/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_173505_alter_trigger_category_translations.php index 1bb0ca0bb..52f043433 100644 --- a/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_173505_alter_trigger_category_translations.php +++ b/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_173505_alter_trigger_category_translations.php @@ -16,10 +16,12 @@ class AlterTriggerCategoryTranslations extends Migration public function up() { $triggerBody = $this->getTriggerBody(); + $dbPrefix = DB::getTablePrefix(); + $insertTrigger = <<< SQL CREATE TRIGGER %s - BEFORE INSERT ON category_translations - FOR EACH ROW + BEFORE INSERT ON ${dbPrefix}category_translations + FOR EACH ROW BEGIN $triggerBody END; @@ -27,8 +29,8 @@ SQL; $updateTrigger = <<< SQL CREATE TRIGGER %s - BEFORE UPDATE ON category_translations - FOR EACH ROW + BEFORE UPDATE ON ${dbPrefix}category_translations + FOR EACH ROW BEGIN $triggerBody END; @@ -66,44 +68,46 @@ SQL; */ private function getTriggerBody() { + $dbPrefix = DB::getTablePrefix(); + return <<= parent._lft AND node._rgt <= parent._rgt - AND node.id = (SELECT parent_id FROM categories WHERE id = NEW.category_id) - AND node.parent_id IS NOT NULL + AND node.id = (SELECT parent_id FROM ${dbPrefix}categories WHERE id = NEW.category_id) + AND node.parent_id IS NOT NULL AND parent.parent_id IS NOT NULL AND parent_translations.locale = NEW.locale GROUP BY node.id; - - IF parentUrlPath IS NULL + + IF parentUrlPath IS NULL THEN SET urlPath = NEW.slug; ELSE SET urlPath = concat(parentUrlPath, '/', NEW.slug); END IF; - + SET NEW.url_path = urlPath; - + END IF; SQL; diff --git a/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_173524_alter_stored_function_url_path_category.php b/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_173524_alter_stored_function_url_path_category.php index fc4714e62..84c7d1135 100644 --- a/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_173524_alter_stored_function_url_path_category.php +++ b/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_173524_alter_stored_function_url_path_category.php @@ -12,6 +12,8 @@ class AlterStoredFunctionUrlPathCategory extends Migration */ public function up() { + $dbPrefix = DB::getTablePrefix(); + $functionSQL = <<< SQL DROP FUNCTION IF EXISTS `get_url_path_of_category`; CREATE FUNCTION get_url_path_of_category( @@ -21,12 +23,12 @@ class AlterStoredFunctionUrlPathCategory extends Migration RETURNS VARCHAR(255) DETERMINISTIC BEGIN - + DECLARE urlPath VARCHAR(255); - + IF NOT EXISTS ( - SELECT id - FROM categories + SELECT id + FROM ${dbPrefix}categories WHERE id = categoryId AND parent_id IS NULL @@ -35,9 +37,9 @@ class AlterStoredFunctionUrlPathCategory extends Migration SELECT GROUP_CONCAT(parent_translations.slug SEPARATOR '/') INTO urlPath FROM - categories AS node, - categories AS parent - JOIN category_translations AS parent_translations ON parent.id = parent_translations.category_id + ${dbPrefix}categories AS node, + ${dbPrefix}categories AS parent + JOIN ${dbPrefix}category_translations AS parent_translations ON parent.id = parent_translations.category_id WHERE node._lft >= parent._lft AND node._rgt <= parent._rgt @@ -47,15 +49,15 @@ class AlterStoredFunctionUrlPathCategory extends Migration AND parent_translations.locale = localeCode GROUP BY node.id; - + IF urlPath IS NULL THEN - SET urlPath = (SELECT slug FROM category_translations WHERE category_translations.category_id = categoryId); + SET urlPath = (SELECT slug FROM ${dbPrefix}category_translations WHERE ${dbPrefix}category_translations.category_id = categoryId); END IF; ELSE SET urlPath = ''; END IF; - + RETURN urlPath; END; SQL; diff --git a/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_195305_alter_trigger_on_categories.php b/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_195305_alter_trigger_on_categories.php index 0131109a7..61722e334 100644 --- a/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_195305_alter_trigger_on_categories.php +++ b/packages/Webkul/Shop/src/Database/Migrations/2020_01_06_195305_alter_trigger_on_categories.php @@ -18,10 +18,11 @@ class AlterTriggerOnCategories extends Migration public function up() { $triggerBody = $this->getTriggerBody(); + $dbPrefix = DB::getTablePrefix(); $insertTrigger = <<< SQL - CREATE TRIGGER %s - AFTER INSERT ON categories + CREATE TRIGGER %s + AFTER INSERT ON ${dbPrefix}categories FOR EACH ROW BEGIN $triggerBody @@ -29,8 +30,8 @@ class AlterTriggerOnCategories extends Migration SQL; $updateTrigger = <<< SQL - CREATE TRIGGER %s - AFTER UPDATE ON categories + CREATE TRIGGER %s + AFTER UPDATE ON ${dbPrefix}categories FOR EACH ROW BEGIN $triggerBody @@ -68,46 +69,48 @@ SQL; */ private function getTriggerBody(): string { + $dbPrefix = DB::getTablePrefix(); + return <<< SQL DECLARE urlPath VARCHAR(255); DECLARE localeCode VARCHAR(255); DECLARE done INT; - DECLARE curs CURSOR FOR (SELECT category_translations.locale - FROM category_translations + DECLARE curs CURSOR FOR (SELECT ${dbPrefix}category_translations.locale + FROM ${dbPrefix}category_translations WHERE category_id = NEW.id); DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; - + IF EXISTS ( SELECT * - FROM category_translations + FROM ${dbPrefix}category_translations WHERE category_id = NEW.id ) THEN - + OPEN curs; - + SET done = 0; - REPEAT + REPEAT FETCH curs INTO localeCode; - + SELECT get_url_path_of_category(NEW.id, localeCode) INTO urlPath; - - IF NEW.parent_id IS NULL + + IF NEW.parent_id IS NULL THEN SET urlPath = ''; END IF; - - UPDATE category_translations - SET url_path = urlPath - WHERE - category_translations.category_id = NEW.id - AND category_translations.locale = localeCode; - + + UPDATE ${dbPrefix}category_translations + SET url_path = urlPath + WHERE + ${dbPrefix}category_translations.category_id = NEW.id + AND ${dbPrefix}category_translations.locale = localeCode; + UNTIL done END REPEAT; - + CLOSE curs; - + END IF; SQL; }