module-toolkit/table-manager-opensearch

1.0.1 2025-07-31 18:26 UTC

This package is auto-updated.

Last update: 2025-07-31 18:27:19 UTC


README

How to use.

--- di.xml

<virtualType name="Custom\Module\Model\GetConnectionName"
             type="ModuleToolkit\TableManager\TableManager\GetConnectionName">
    <arguments>
        <argument name="connectionNameConfigPath" xsi:type="string">default</argument>
    </arguments>
</virtualType>

<virtualType name="Custom\Module\Model\CustomIndexBuilderSearch"
             type="ModuleToolkit\TableManagerOpenSearch\TableManager\IndexBuilderSearch"
>
    <arguments>
        <argument name="getConnectionName" xsi:type="object">Custom\Module\Model\GetConnectionName</argument>
        <argument name="indexName" xsi:type="string">custom_index_name</argument>
        <argument name="indexTableName" xsi:type="string">custom_index_table</argument>
        <argument name="primaryColumn" xsi:type="string">entity_id</argument>
        <argument name="indexTableColumns" xsi:type="array">
            <item name="entity_id" xsi:type="string">entity_id</item>
            <item name="name" xsi:type="string">name</item>
            <item name="total" xsi:type="string">total</item>
        </argument>
    </arguments>
</virtualType>
<type name="Custom\Module\Model\Indexer\CustomIndexer">
    <arguments>
        <argument name="indexBuilder" xsi:type="object">Custom\Module\Model\CustomIndexBuilderSearch</argument>
    </arguments>
</type>

  • Index process
namespace Custom\Module\Model\Indexer;

use ModuleToolkit\TableManager\TableManager\IndexBuilderSearchInterface;
use Magento\Framework\Indexer\ActionInterface;


class CustomIndexer implements ActionInterface
{
    public function __construct(protected IndexBuilderSearchInterface $indexBuilder)
    {}

    public function execute($ids = null)
    {
        $this->indexBuilder->rebuild($ids);
    }

    public function executeFull()
    {
        $this->indexBuilder->rebuild();
    }

    public function executeList(array $ids)
    {
        $this->indexBuilder->rebuild($ids);
    }

    public function executeRow($id)
    {
        $this->indexBuilder->rebuild([$id]);
    }
}
    1. Search and get OpenSearch Results Format
use ModuleToolkit\TableManager\TableManager\IndexBuilderSearchInterface;

class CustomSearch
{
    public function __construct(
        protected IndexBuilderSearchInterface $indexBuilderSearch
    )
    {
    }
    
    public function search()
    {
        $searchCriteria = ['sku' => 'test'];
        
        $page = 1;
        $size = 300;
        $sort = ['sku' => 'DESC']
    
        $this->indexBuilderSearch->searchWithPagination($searchCriteria, $page, $size, $sort)//array;
        $this->indexBuilderSearch->search($searchCriteria);// array
        $this->indexBuilderSearch->getById(1); //array
    }
}
    1. Search and get magento array Format
use ModuleToolkit\TableManager\TableManager\IndexBuilderSearchInterface;
use ModuleToolkit\TableManager\TableManager\TableManagerInterface;

class CustomSearch
{
    public function __construct(
        protected IndexBuilderSearchInterface $indexBuilderSearch,
        protected TableManagerInterface $tableManager
    ){}
    
    public function search()
    {
        $searchCriteria = ['sku' => 'test'];
        
        $page = 1;
        $size = 300;
        $sort = ['sku' => 'DESC']
        
        $tableRequest = $this->tableManager->getTableRequest();
        $tableRequest
            ->setCurPage($page)
            ->setLimit($size)
            ->setSortOrder($sort)
            ->setValues($searchCriteria);
            
        $this->tableManager->indexFastSearch($tableRequest, $this->indexBuilderSearch); //array magento array format
    }
}