|
Apache/2.4.41 (Ubuntu) Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) server ip : 62.171.164.128 | your ip : 127.0.0.1 safemode OFF > / home / dev2.destoffenstraat.com / app / code / Mirasvit / SearchMysql / Model / Indexer / |
Filename | /home/dev2.destoffenstraat.com/app/code/Mirasvit/SearchMysql/Model/Indexer/IndexStructure.php |
Size | 3.08 kb |
Permission | rwxrwxrwx |
Owner | root : root |
Create time | 17-Aug-2025 10:26 |
Last modified | 15-Oct-2024 20:30 |
Last accessed | 22-Aug-2025 02:07 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
<?php
/**
* Mirasvit
*
* This source file is subject to the Mirasvit Software License, which is available at https://mirasvit.com/license/.
* Do not edit or add to this file if you wish to upgrade the to newer versions in the future.
* If you wish to customize this module for your needs.
* Please refer to http://www.magentocommerce.com for more information.
*
* @category Mirasvit
* @package mirasvit/module-search-ultimate
* @version 2.3.2
* @copyright Copyright (C) 2024 Mirasvit (https://mirasvit.com/)
*/
namespace Mirasvit\SearchMysql\Model\Indexer;
use Magento\Framework\App\ResourceConnection;
use Magento\Framework\DB\Adapter\AdapterInterface;
use Magento\Framework\DB\Ddl\Table;
use Magento\Framework\Indexer\IndexStructureInterface;
use Mirasvit\SearchMysql\SearchAdapter\Index\IndexNameResolver;
class IndexStructure implements IndexStructureInterface
{
private $resource;
private $indexNameResolver;
public function __construct(
ResourceConnection $resource,
IndexNameResolver $indexNameResolver
) {
$this->resource = $resource;
$this->indexNameResolver = $indexNameResolver;
}
/**
* @param string $index
* @param \Magento\Framework\Search\Request\Dimension[] $dimensions
* @return void
*/
public function delete($index, array $dimensions = [])
{
$tableName = $this->indexNameResolver->getIndexName($index, $dimensions);
if ($this->resource->getConnection()->isTableExists($tableName)) {
$this->resource->getConnection()->dropTable($tableName);
}
}
/**
* @param string $index
* @param array $fields
* @param \Magento\Framework\Search\Request\Dimension[] $dimensions
* @return void
*/
public function create($index, array $fields, array $dimensions = [])
{
$tableName = $this->indexNameResolver->getIndexName($index, $dimensions);
$this->createFulltextIndex($tableName);
}
/**
* Create fulltext index table.
*/
private function createFulltextIndex(string $tableName): void
{
$table = $this->resource->getConnection()->newTable($tableName)
->addColumn(
'entity_id',
Table::TYPE_INTEGER,
10,
['unsigned' => true, 'nullable' => false],
'Entity ID'
)->addColumn(
'attribute_code',
Table::TYPE_TEXT,
255,
['nullable' => false]
)->addColumn(
'data_index',
Table::TYPE_TEXT,
'4g',
['nullable' => true],
'Data index'
)->addIndex(
'idx_primary',
['entity_id', 'attribute_code'],
['type' => AdapterInterface::INDEX_TYPE_PRIMARY]
)->addIndex(
'FTI_FULLTEXT_DATA_INDEX',
['data_index'],
['type' => AdapterInterface::INDEX_TYPE_FULLTEXT]
);
$this->resource->getConnection()->createTable($table);
}
}
/**
* Mirasvit
*
* This source file is subject to the Mirasvit Software License, which is available at https://mirasvit.com/license/.
* Do not edit or add to this file if you wish to upgrade the to newer versions in the future.
* If you wish to customize this module for your needs.
* Please refer to http://www.magentocommerce.com for more information.
*
* @category Mirasvit
* @package mirasvit/module-search-ultimate
* @version 2.3.2
* @copyright Copyright (C) 2024 Mirasvit (https://mirasvit.com/)
*/
namespace Mirasvit\SearchMysql\Model\Indexer;
use Magento\Framework\App\ResourceConnection;
use Magento\Framework\DB\Adapter\AdapterInterface;
use Magento\Framework\DB\Ddl\Table;
use Magento\Framework\Indexer\IndexStructureInterface;
use Mirasvit\SearchMysql\SearchAdapter\Index\IndexNameResolver;
class IndexStructure implements IndexStructureInterface
{
private $resource;
private $indexNameResolver;
public function __construct(
ResourceConnection $resource,
IndexNameResolver $indexNameResolver
) {
$this->resource = $resource;
$this->indexNameResolver = $indexNameResolver;
}
/**
* @param string $index
* @param \Magento\Framework\Search\Request\Dimension[] $dimensions
* @return void
*/
public function delete($index, array $dimensions = [])
{
$tableName = $this->indexNameResolver->getIndexName($index, $dimensions);
if ($this->resource->getConnection()->isTableExists($tableName)) {
$this->resource->getConnection()->dropTable($tableName);
}
}
/**
* @param string $index
* @param array $fields
* @param \Magento\Framework\Search\Request\Dimension[] $dimensions
* @return void
*/
public function create($index, array $fields, array $dimensions = [])
{
$tableName = $this->indexNameResolver->getIndexName($index, $dimensions);
$this->createFulltextIndex($tableName);
}
/**
* Create fulltext index table.
*/
private function createFulltextIndex(string $tableName): void
{
$table = $this->resource->getConnection()->newTable($tableName)
->addColumn(
'entity_id',
Table::TYPE_INTEGER,
10,
['unsigned' => true, 'nullable' => false],
'Entity ID'
)->addColumn(
'attribute_code',
Table::TYPE_TEXT,
255,
['nullable' => false]
)->addColumn(
'data_index',
Table::TYPE_TEXT,
'4g',
['nullable' => true],
'Data index'
)->addIndex(
'idx_primary',
['entity_id', 'attribute_code'],
['type' => AdapterInterface::INDEX_TYPE_PRIMARY]
)->addIndex(
'FTI_FULLTEXT_DATA_INDEX',
['data_index'],
['type' => AdapterInterface::INDEX_TYPE_FULLTEXT]
);
$this->resource->getConnection()->createTable($table);
}
}