| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- <?php
- /**
- * This file is part of the Klarna Core module
- *
- * (c) Klarna Bank AB (publ)
- *
- * For the full copyright and license information, please view the NOTICE
- * and LICENSE files that were distributed with this source code.
- */
- namespace Klarna\Core\Setup;
- use Magento\Framework\DB\Ddl\Table;
- use Magento\Framework\Setup\ModuleContextInterface;
- use Magento\Framework\Setup\SchemaSetupInterface;
- use Magento\Framework\Setup\UpgradeSchemaInterface;
- /**
- * Class UpgradeSchema
- *
- * @package Klarna\Core\Setup
- */
- class UpgradeSchema implements UpgradeSchemaInterface
- {
- /**
- * Upgrades DB schema for a module
- *
- * @param SchemaSetupInterface $setup
- * @param ModuleContextInterface $context
- * @return void
- * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
- */
- public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
- {
- $installer = $setup;
- $installer->startSetup();
- if (version_compare($context->getVersion(), '1.1.0', '<') && $installer->tableExists('klarna_kco_order')) {
- $newTable = 'klarna_core_order';
- $this->renameKlarnaKcoOrderTable($installer, $newTable);
- $this->updateColumnsInKlarnaOrderTable($installer, $newTable);
- }
- if (version_compare($context->getVersion(), '4.5.3', '<')) {
- $this->addAcknowledgedIndex($installer);
- }
- if (version_compare($context->getVersion(), '4.5.4', '<')) {
- $this->removeFKConstraintFromOrderTable(
- $installer,
- 'klarna_core_order',
- 'order_id',
- 'sales_order',
- 'entity_id'
- );
- $this->removeFKConstraintFromOrderTable(
- $installer,
- 'klarna_kco_order',
- 'order_id',
- 'sales_order',
- 'entity_id'
- );
- }
- $installer->endSetup();
- }
- /**
- * Updating the columns from the Klarna order table
- *
- * @param SchemaSetupInterface $installer
- * @param string $tableName
- */
- private function updateColumnsInKlarnaOrderTable(SchemaSetupInterface $installer, $tableName)
- {
- $installer->getConnection()
- ->addColumn(
- $tableName,
- 'session_id',
- [
- 'type' => Table::TYPE_TEXT,
- 'length' => 255,
- 'comment' => 'Session Id',
- 'after' => 'klarna_checkout_id'
- ]
- );
- $installer->getConnection()
- ->changeColumn(
- $tableName,
- 'kco_order_id',
- 'id',
- [
- 'type' => Table::TYPE_INTEGER,
- 'identity' => true,
- 'unsigned' => true,
- 'nullable' => false,
- 'primary' => true,
- 'comment' => 'Entity Id'
- ]
- );
- $installer->getConnection()
- ->changeColumn(
- $tableName,
- 'klarna_checkout_id',
- 'klarna_order_id',
- [
- 'type' => Table::TYPE_TEXT,
- 'length' => 255,
- 'comment' => 'Klarna Order Id'
- ]
- );
- $installer->getConnection()
- ->changeColumn(
- $tableName,
- 'klarna_reservation_id',
- 'reservation_id',
- [
- 'type' => Table::TYPE_TEXT,
- 'length' => 255,
- 'comment' => 'Reservation Id'
- ]
- );
- }
- /**
- * Renaming the Klarna kco order table
- *
- * @param SchemaSetupInterface $installer
- * @param string $newTableName
- */
- private function renameKlarnaKcoOrderTable(SchemaSetupInterface $installer, $newTableName)
- {
- $oldTable = $installer->getTable('klarna_kco_order');
- $newTable = $installer->getTable($newTableName);
- $installer->getConnection()->renameTable($oldTable, $newTable);
- }
- /**
- * Adding a index to the acknowledged column in the Klarna order table
- *
- * @param SchemaSetupInterface $installer
- */
- private function addAcknowledgedIndex(SchemaSetupInterface $installer)
- {
- $table = $installer->getTable('klarna_core_order');
- $index_list = $installer->getConnection()->getIndexList($table);
- $index_name = $installer->getIdxName($table, 'is_acknowledged');
- if (!isset($index_list[$index_name])) {
- $installer->getConnection()->addIndex($table, $index_name, 'is_acknowledged');
- }
- }
- /**
- * Remove FK constraint from `klarna_core_order` table
- *
- * @param SchemaSetupInterface $installer
- * @param string $myTable
- * @param string $myColumn
- * @param string $foriegnTable
- * @param string $foriegnColumn
- */
- private function removeFKConstraintFromOrderTable(
- SchemaSetupInterface $installer,
- $myTable,
- $myColumn,
- $foriegnTable,
- $foriegnColumn
- ) {
- $targetTable = $installer->getTable('klarna_core_order');
- $foreignKeyConstraints = $installer->getConnection()->getForeignKeys($targetTable);
- $targetConstraintName = $installer->getConnection()->getForeignKeyName(
- $installer->getTable($myTable),
- $myColumn,
- $installer->getTable($foriegnTable),
- $foriegnColumn
- );
- if (isset($foreignKeyConstraints[$targetConstraintName])) {
- $installer->getConnection()->dropForeignKey(
- $installer->getTable('klarna_core_order'),
- $installer->getFkName(
- $installer->getTable($myTable),
- $myColumn,
- $installer->getTable($foriegnTable),
- $foriegnColumn
- )
- );
- }
- }
- }
|