Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Data Fields
TableMaintainer Class Reference

Public Member Functions

 __construct (ResourceConnection $resource, TableResolver $tableResolver, $connectionName=null)
 
 getConnection ()
 
 getMainTable (array $dimensions)
 
 createTablesForDimensions (array $dimensions)
 
 dropTablesForDimensions (array $dimensions)
 
 truncateTablesForDimensions (array $dimensions)
 
 getMainReplicaTable (array $dimensions)
 
 createMainTmpTable (array $dimensions)
 
 getMainTmpTable (array $dimensions)
 

Data Fields

const MAIN_INDEX_TABLE = 'catalog_product_index_price'
 

Detailed Description

Class encapsulate logic of work with tables per store in Product Price indexer

Definition at line 18 of file TableMaintainer.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( ResourceConnection  $resource,
TableResolver  $tableResolver,
  $connectionName = null 
)
Parameters
ResourceConnection$resource
TableResolver$tableResolver
null$connectionName

Definition at line 65 of file TableMaintainer.php.

69  {
70  $this->resource = $resource;
71  $this->tableResolver = $tableResolver;
72  $this->connectionName = $connectionName;
73  }

Member Function Documentation

◆ createMainTmpTable()

createMainTmpTable ( array  $dimensions)

Create temporary index table for dimensions

Parameters
Dimension[]$dimensions
Returns
void

Definition at line 252 of file TableMaintainer.php.

253  {
254  // Create temporary table based on template table catalog_product_index_price_tmp without indexes
255  $templateTableName = $this->resource->getTableName(self::MAIN_INDEX_TABLE . '_tmp');
256  $temporaryTableName = $this->getMainTable($dimensions) . $this->tmpTableSuffix;
257  $this->getConnection()->createTemporaryTableLike($temporaryTableName, $templateTableName, true);
258  $this->mainTmpTable[$this->getArrayKeyForTmpTable($dimensions)] = $temporaryTableName;
259  }

◆ createTablesForDimensions()

createTablesForDimensions ( array  $dimensions)

Create main and replica index tables for dimensions

Parameters
Dimension[]$dimensions
Returns
void
Exceptions

Definition at line 183 of file TableMaintainer.php.

184  {
185  $mainTableName = $this->getMainTable($dimensions);
186  //Create index table for dimensions based on main replica table
187  //Using main replica table is necessary for backward capability and TableResolver plugin work
188  $this->createTable(
189  $this->getTable(self::MAIN_INDEX_TABLE . $this->additionalTableSuffix),
190  $mainTableName
191  );
192 
193  $mainReplicaTableName = $this->getMainTable($dimensions) . $this->additionalTableSuffix;
194  //Create replica table for dimensions based on main replica table
195  $this->createTable(
196  $this->getTable(self::MAIN_INDEX_TABLE . $this->additionalTableSuffix),
197  $mainReplicaTableName
198  );
199  }

◆ dropTablesForDimensions()

dropTablesForDimensions ( array  $dimensions)

Drop main and replica index tables for dimensions

Parameters
Dimension[]$dimensions
Returns
void

Definition at line 208 of file TableMaintainer.php.

209  {
210  $mainTableName = $this->getMainTable($dimensions);
211  $this->dropTable($mainTableName);
212 
213  $mainReplicaTableName = $this->getMainTable($dimensions) . $this->additionalTableSuffix;
214  $this->dropTable($mainReplicaTableName);
215  }

◆ getConnection()

getConnection ( )

Get connection for work with price indexer

Returns
AdapterInterface

Definition at line 80 of file TableMaintainer.php.

80  : AdapterInterface
81  {
82  if (null === $this->connection) {
83  $this->connection = $this->resource->getConnection($this->connectionName);
84  }
85  return $this->connection;
86  }

◆ getMainReplicaTable()

getMainReplicaTable ( array  $dimensions)

Return replica index table name

Parameters
Dimension[]$dimensions
Returns
string

Definition at line 240 of file TableMaintainer.php.

240  : string
241  {
242  return $this->getMainTable($dimensions) . $this->additionalTableSuffix;
243  }

◆ getMainTable()

getMainTable ( array  $dimensions)

Return main index table name

Parameters
Dimension[]$dimensions
Returns
string

Definition at line 169 of file TableMaintainer.php.

169  : string
170  {
171  return $this->tableResolver->resolve(self::MAIN_INDEX_TABLE, $dimensions);
172  }

◆ getMainTmpTable()

getMainTmpTable ( array  $dimensions)

Return temporary index table name

Parameters
Dimension[]$dimensions
Returns
string
Exceptions

Definition at line 270 of file TableMaintainer.php.

270  : string
271  {
272  $cacheKey = $this->getArrayKeyForTmpTable($dimensions);
273  if (!isset($this->mainTmpTable[$cacheKey])) {
274  throw new \LogicException(
275  sprintf('Temporary table for provided dimensions "%s" does not exist', $cacheKey)
276  );
277  }
278  return $this->mainTmpTable[$cacheKey];
279  }

◆ truncateTablesForDimensions()

truncateTablesForDimensions ( array  $dimensions)

Truncate main and replica index tables for dimensions

Parameters
Dimension[]$dimensions
Returns
void

Definition at line 224 of file TableMaintainer.php.

225  {
226  $mainTableName = $this->getMainTable($dimensions);
227  $this->truncateTable($mainTableName);
228 
229  $mainReplicaTableName = $this->getMainTable($dimensions) . $this->additionalTableSuffix;
230  $this->truncateTable($mainReplicaTableName);
231  }

Field Documentation

◆ MAIN_INDEX_TABLE

const MAIN_INDEX_TABLE = 'catalog_product_index_price'

Catalog product price index table name

Definition at line 23 of file TableMaintainer.php.


The documentation for this class was generated from the following file: