resourceConnection = $resourceConnection; $this->indexNameResolver = $indexNameResolver; } /** * @inheritdoc */ public function isExist(IndexName $indexName, string $connectionName): bool { $connection = $this->resourceConnection->getConnection($connectionName); $tableName = $this->indexNameResolver->resolveName($indexName); return $connection->isTableExists($this->resourceConnection->getTableName($tableName)); } /** * @inheritdoc */ public function create(IndexName $indexName, string $connectionName): void { $connection = $this->resourceConnection->getConnection($connectionName); $tableName = $this->indexNameResolver->resolveName($indexName); if ($connection->isTableExists($tableName)) { throw new StateException(__('Table %table already exits', ['table' => $tableName])); } $this->createTable($connection, $tableName); } /** * Create the index table * @param \Magento\Framework\DB\Adapter\AdapterInterface $connection * @param string $tableName * @return void */ private function createTable(\Magento\Framework\DB\Adapter\AdapterInterface $connection, string $tableName) { $table = $connection->newTable( $this->resourceConnection->getTableName($tableName) )->setComment( 'Inventory Stock item Table' )->addColumn( self::SKU, Table::TYPE_TEXT, 64, [ Table::OPTION_PRIMARY => true, Table::OPTION_NULLABLE => false, ], 'Sku' )->addColumn( self::QUANTITY, Table::TYPE_DECIMAL, null, [ Table::OPTION_UNSIGNED => false, Table::OPTION_NULLABLE => false, Table::OPTION_DEFAULT => 0, Table::OPTION_PRECISION => 10, Table::OPTION_SCALE => 4, ], 'Quantity' )->addColumn( self::IS_SALABLE, Table::TYPE_BOOLEAN, null, [ Table::OPTION_NULLABLE => false, ], 'Is Salable' ); $connection->createTable($table); } /** * @inheritdoc */ public function delete(IndexName $indexName, string $connectionName): void { $connection = $this->resourceConnection->getConnection($connectionName); $tableName = $this->indexNameResolver->resolveName($indexName); $connection->dropTable($this->resourceConnection->getTableName($tableName)); } }