<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20230412095051 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql("
CREATE TABLE IF NOT EXISTS `std_translations_content` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Identifier',
`translation_id` int unsigned NOT NULL COMMENT 'Translation ID from table std_translations',
`language_code` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'ISO 639 Language code',
`content` varchar(8000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT 'ISO 639 Translation',
PRIMARY KEY (`id`),
UNIQUE KEY `translation_id_language_code` (`translation_id`,`language_code`),
KEY `FK_std_translations_content_std_languages` (`language_code`),
CONSTRAINT `FK_std_translations_content_std_languages` FOREIGN KEY (`language_code`) REFERENCES `std_languages` (`language_code`),
CONSTRAINT `FK_std_translations_content_std_translations` FOREIGN KEY (`translation_id`) REFERENCES `std_translations` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
");
$this->addSql("INSERT INTO `std_languages` (`language_code`, `name`, `is_public`, `is_active`, `is_default`, `order_value`, `locale`)
SELECT DISTINCT language_code, language_code,0,0,0,0,language_code FROM std_translations WHERE language_code NOT IN(SELECT language_code FROM std_languages) AND RTRIM(LTRIM(COALESCE(language_code,''))) <>'';");
$this->addSql("REPLACE INTO std_translations_content (translation_id, language_code, content)
SELECT DISTINCT t.id, s.`language_code`, s.`translation` FROM std_translations AS s
INNER JOIN (
SELECT MIN(id) AS id,label,domain FROM std_translations GROUP BY label,domain
) AS t ON s.domain=t.domain AND s.label=t.label
ORDER BY t.id ASC");
$this->addSql("DELETE FROM std_translations WHERE id NOT IN(SELECT translation_id FROM std_translations_content)");
$this->addSql("ALTER TABLE `std_translations`
DROP COLUMN `language_code`,
DROP COLUMN `translation`;
");
$this->addSql("ALTER TABLE `std_translations`
ADD UNIQUE INDEX `label_domain` (`label`, `domain`);");
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql("ALTER TABLE `std_translations`
DROP INDEX `label_domain`;");
$this->addSql("ALTER TABLE `std_translations`
ADD COLUMN `language_code` VARCHAR(2) NOT NULL COLLATE 'utf8mb4_unicode_ci' AFTER `updated_by`,
ADD COLUMN `translation` VARCHAR(8000) NOT NULL COLLATE 'utf8mb4_unicode_ci' AFTER `label`;");
$this->addSql("INSERT INTO std_translations (created_by,updated_by,label,created_date,updated_date,domain,language_code,translation)
SELECT std_translations.created_by, std_translations.updated_by,std_translations.label,std_translations.created_date,std_translations.updated_date
,std_translations.domain, std_translations_content.language_code,std_translations_content.content
FROM std_translations
INNER JOIN std_translations_content
ON std_translations.id = std_translations_content.translation_id;");
$this->addSql("DROP TABLE std_translations_content");
$this->addSql("DELETE FROM std_translations WHERE (language_code IS NULL OR language_code = ' ') AND (translation IS NULL OR translation = ' ');");
}
}