b374k
m1n1 1.01
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
Size3.08 kb
Permissionrwxrwxrwx
Ownerroot : root
Create time17-Aug-2025 10:26
Last modified15-Oct-2024 20:30
Last accessed22-Aug-2025 02:07
Actionsedit | rename | delete | download (gzip)
Viewtext | 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);
}
}