<?php

declare(strict_types=1);

namespace D3\ManufacturerInformation\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Types\TextType;
use Doctrine\Migrations\AbstractMigration;

/**
 * Auto-generated Migration: Please modify to your needs!
 */
final class Version20241028172608 extends AbstractMigration
{
    public function getDescription() : string
    {
	    return 'Adds multilang tables for the D3 manufacturer longdesc';
    }
	
	public function up(Schema $schema) : void
	{
		$this->connection->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
		
		$this->d3AddLongdescMultilangColumnsToOxmanufacturers($schema);
	}

    public function down(Schema $schema) : void
    {}
	
	/**
	 * @param Schema $schema
	 * @return void
	 * @throws \Doctrine\DBAL\Schema\SchemaException
	 */
	public function d3AddLongdescMultilangColumnsToOxmanufacturers(Schema $schema){
		$table = !$schema->hasTable('oxmanufacturers') ?
			$schema->createTable('oxmanufacturers') :
			$schema->getTable('oxmanufacturers');
		
		// lang 1
		if (!$table->hasColumn('D3DESCRIPTION_1')) {
			$table->addColumn('D3DESCRIPTION_1', (new TextType())->getName())
				->setLength($this->connection->getDatabasePlatform()::LENGTH_LIMIT_TEXT)
				->setNotnull(true);
		}
		
		// lang 2
		if (!$table->hasColumn('D3DESCRIPTION_2')) {
			$table->addColumn('D3DESCRIPTION_2', (new TextType())->getName())
				->setLength($this->connection->getDatabasePlatform()::LENGTH_LIMIT_TEXT)
				->setNotnull(true);
		}
		
		// lang 3
		if (!$table->hasColumn('D3DESCRIPTION_3')) {
			$table->addColumn('D3DESCRIPTION_3', (new TextType())->getName())
				->setLength($this->connection->getDatabasePlatform()::LENGTH_LIMIT_TEXT)
				->setNotnull(true);
		}
	}
}