Skip to content
Snippets Groups Projects
Commit 55a536a9 authored by Anton Kaplya's avatar Anton Kaplya
Browse files

MAGETWO-47402: All type products are available

parent 36c93180
No related merge requests found
...@@ -1084,42 +1084,52 @@ ...@@ -1084,42 +1084,52 @@
<item name="distinct" xsi:type="array"> <item name="distinct" xsi:type="array">
<item name="renderer" xsi:type="object">Magento\Framework\DB\Select\DistinctRenderer</item> <item name="renderer" xsi:type="object">Magento\Framework\DB\Select\DistinctRenderer</item>
<item name="sort" xsi:type="string">100</item> <item name="sort" xsi:type="string">100</item>
<item name="part" xsi:type="string">distinct</item>
</item> </item>
<item name="columns" xsi:type="array"> <item name="columns" xsi:type="array">
<item name="renderer" xsi:type="object">Magento\Framework\DB\Select\ColumnsRenderer</item> <item name="renderer" xsi:type="object">Magento\Framework\DB\Select\ColumnsRenderer</item>
<item name="sort" xsi:type="string">200</item> <item name="sort" xsi:type="string">200</item>
<item name="part" xsi:type="string">columns</item>
</item> </item>
<item name="union" xsi:type="array"> <item name="union" xsi:type="array">
<item name="renderer" xsi:type="object">Magento\Framework\DB\Select\UnionRenderer</item> <item name="renderer" xsi:type="object">Magento\Framework\DB\Select\UnionRenderer</item>
<item name="sort" xsi:type="string">300</item> <item name="sort" xsi:type="string">300</item>
<item name="part" xsi:type="string">union</item>
</item> </item>
<item name="from" xsi:type="array"> <item name="from" xsi:type="array">
<item name="renderer" xsi:type="object">Magento\Framework\DB\Select\FromRenderer</item> <item name="renderer" xsi:type="object">Magento\Framework\DB\Select\FromRenderer</item>
<item name="sort" xsi:type="string">400</item> <item name="sort" xsi:type="string">400</item>
<item name="part" xsi:type="string">from</item>
</item> </item>
<item name="where" xsi:type="array"> <item name="where" xsi:type="array">
<item name="renderer" xsi:type="object">Magento\Framework\DB\Select\WhereRenderer</item> <item name="renderer" xsi:type="object">Magento\Framework\DB\Select\WhereRenderer</item>
<item name="sort" xsi:type="string">500</item> <item name="sort" xsi:type="string">500</item>
<item name="part" xsi:type="string">where</item>
</item> </item>
<item name="group" xsi:type="array"> <item name="group" xsi:type="array">
<item name="renderer" xsi:type="object">Magento\Framework\DB\Select\GroupRenderer</item> <item name="renderer" xsi:type="object">Magento\Framework\DB\Select\GroupRenderer</item>
<item name="sort" xsi:type="string">600</item> <item name="sort" xsi:type="string">600</item>
<item name="part" xsi:type="string">group</item>
</item> </item>
<item name="having" xsi:type="array"> <item name="having" xsi:type="array">
<item name="renderer" xsi:type="object">Magento\Framework\DB\Select\HavingRenderer</item> <item name="renderer" xsi:type="object">Magento\Framework\DB\Select\HavingRenderer</item>
<item name="sort" xsi:type="string">700</item> <item name="sort" xsi:type="string">700</item>
<item name="part" xsi:type="string">having</item>
</item> </item>
<item name="order" xsi:type="array"> <item name="order" xsi:type="array">
<item name="renderer" xsi:type="object">Magento\Framework\DB\Select\OrderRenderer</item> <item name="renderer" xsi:type="object">Magento\Framework\DB\Select\OrderRenderer</item>
<item name="sort" xsi:type="string">800</item> <item name="sort" xsi:type="string">800</item>
<item name="part" xsi:type="string">order</item>
</item> </item>
<item name="limit" xsi:type="array"> <item name="limit" xsi:type="array">
<item name="renderer" xsi:type="object">Magento\Framework\DB\Select\LimitRenderer</item> <item name="renderer" xsi:type="object">Magento\Framework\DB\Select\LimitRenderer</item>
<item name="sort" xsi:type="string">900</item> <item name="sort" xsi:type="string">900</item>
<item name="part" xsi:type="string">limitcount</item>
</item> </item>
<item name="for_update" xsi:type="array"> <item name="for_update" xsi:type="array">
<item name="renderer" xsi:type="object">Magento\Framework\DB\Select\ForUpdateRenderer</item> <item name="renderer" xsi:type="object">Magento\Framework\DB\Select\ForUpdateRenderer</item>
<item name="sort" xsi:type="string">1000</item> <item name="sort" xsi:type="string">1000</item>
<item name="part" xsi:type="string">forupdate</item>
</item> </item>
</argument> </argument>
</arguments> </arguments>
......
...@@ -15,7 +15,7 @@ class SelectRenderer implements RendererInterface ...@@ -15,7 +15,7 @@ class SelectRenderer implements RendererInterface
/** /**
* @var RendererInterface[] * @var RendererInterface[]
*/ */
protected $renders; protected $renderers;
/** /**
* @param RendererInterface[] $renderers * @param RendererInterface[] $renderers
...@@ -23,11 +23,11 @@ class SelectRenderer implements RendererInterface ...@@ -23,11 +23,11 @@ class SelectRenderer implements RendererInterface
public function __construct( public function __construct(
array $renderers array $renderers
) { ) {
$this->renders = $this->sort($renderers); $this->renderers = $this->sort($renderers);
} }
/** /**
* Sort renders * Sort renderers
* *
* @param array $renders * @param array $renders
* @return array * @return array
...@@ -65,9 +65,11 @@ class SelectRenderer implements RendererInterface ...@@ -65,9 +65,11 @@ class SelectRenderer implements RendererInterface
*/ */
public function render(Select $select, $sql = '') public function render(Select $select, $sql = '')
{ {
$sql = Select::SQL_SELECT; $sql = Select::SQL_SELECT . ' ';
foreach ($this->renders as $renderer) { foreach ($this->renderers as $renderer) {
$sql = $renderer['renderer']->render($select, $sql); if (in_array($renderer['part'], [Select::COLUMNS, Select::FROM]) || $select->getPart($renderer['part'])) {
$sql = $renderer['renderer']->render($select, $sql);
}
} }
return $sql; return $sql;
} }
......
...@@ -24,54 +24,65 @@ class SelectTest extends \PHPUnit_Framework_TestCase ...@@ -24,54 +24,65 @@ class SelectTest extends \PHPUnit_Framework_TestCase
[ [
'renderer' => new \Magento\Framework\DB\Select\DistinctRenderer(), 'renderer' => new \Magento\Framework\DB\Select\DistinctRenderer(),
'sort' => 100, 'sort' => 100,
'part' => 'distinct'
], ],
'columns' => 'columns' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\ColumnsRenderer($quote), 'renderer' => new \Magento\Framework\DB\Select\ColumnsRenderer($quote),
'sort' => 200, 'sort' => 200,
'part' => 'columns'
], ],
'union' => 'union' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\UnionRenderer(), 'renderer' => new \Magento\Framework\DB\Select\UnionRenderer(),
'sort' => 300, 'sort' => 300,
'part' => 'union'
], ],
'from' => 'from' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\FromRenderer($quote), 'renderer' => new \Magento\Framework\DB\Select\FromRenderer($quote),
'sort' => 400, 'sort' => 400,
'part' => 'from'
], ],
'where' => 'where' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\WhereRenderer(), 'renderer' => new \Magento\Framework\DB\Select\WhereRenderer(),
'sort' => 500, 'sort' => 500,
'part' => 'where'
], ],
'group' => 'group' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\GroupRenderer($quote), 'renderer' => new \Magento\Framework\DB\Select\GroupRenderer($quote),
'sort' => 600, 'sort' => 600,
'part' => 'group'
], ],
'having' => 'having' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\HavingRenderer(), 'renderer' => new \Magento\Framework\DB\Select\HavingRenderer(),
'sort' => 700, 'sort' => 700,
'part' => 'having'
], ],
'order' => 'order' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\OrderRenderer($quote), 'renderer' => new \Magento\Framework\DB\Select\OrderRenderer($quote),
'sort' => 800, 'sort' => 800,
'part' => 'order'
], ],
'limit' => 'limit' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\LimitRenderer(), 'renderer' => new \Magento\Framework\DB\Select\LimitRenderer(),
'sort' => 900, 'sort' => 900,
'part' => 'limitcount'
], ],
'for_update' => 'for_update' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\ForUpdateRenderer(), 'renderer' => new \Magento\Framework\DB\Select\ForUpdateRenderer(),
'sort' => 1000, 'sort' => 1000,
'part' => 'forupdate'
], ],
] ]
); );
$select = new Select($this->_getConnectionMockWithMockedQuote(1, "'5'"), $renderer); $select = new Select($this->_getConnectionMockWithMockedQuote(1, "'5'"), $renderer);
$select->from('test')->where('field = ?', 5); $select->from('test')->where('field = ?', 5);
$this->assertEquals("SELECT `test`.* FROM `test` WHERE (field = '5')", $select->assemble()); $this->assertEquals("SELECT `test`.* FROM `test` WHERE (field = '5')", $select->assemble());
......
...@@ -46,51 +46,61 @@ class ConnectionFactory implements \Magento\Framework\Model\ResourceModel\Type\D ...@@ -46,51 +46,61 @@ class ConnectionFactory implements \Magento\Framework\Model\ResourceModel\Type\D
[ [
'renderer' => new \Magento\Framework\DB\Select\DistinctRenderer(), 'renderer' => new \Magento\Framework\DB\Select\DistinctRenderer(),
'sort' => 100, 'sort' => 100,
'part' => 'distinct'
], ],
'columns' => 'columns' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\ColumnsRenderer($quote), 'renderer' => new \Magento\Framework\DB\Select\ColumnsRenderer($quote),
'sort' => 200, 'sort' => 200,
'part' => 'columns'
], ],
'union' => 'union' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\UnionRenderer(), 'renderer' => new \Magento\Framework\DB\Select\UnionRenderer(),
'sort' => 300, 'sort' => 300,
'part' => 'union'
], ],
'from' => 'from' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\FromRenderer($quote), 'renderer' => new \Magento\Framework\DB\Select\FromRenderer($quote),
'sort' => 400, 'sort' => 400,
'part' => 'from'
], ],
'where' => 'where' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\WhereRenderer(), 'renderer' => new \Magento\Framework\DB\Select\WhereRenderer(),
'sort' => 500, 'sort' => 500,
'part' => 'where'
], ],
'group' => 'group' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\GroupRenderer($quote), 'renderer' => new \Magento\Framework\DB\Select\GroupRenderer($quote),
'sort' => 600, 'sort' => 600,
'part' => 'group'
], ],
'having' => 'having' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\HavingRenderer(), 'renderer' => new \Magento\Framework\DB\Select\HavingRenderer(),
'sort' => 700, 'sort' => 700,
'part' => 'having'
], ],
'order' => 'order' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\OrderRenderer($quote), 'renderer' => new \Magento\Framework\DB\Select\OrderRenderer($quote),
'sort' => 800, 'sort' => 800,
'part' => 'order'
], ],
'limit' => 'limit' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\LimitRenderer(), 'renderer' => new \Magento\Framework\DB\Select\LimitRenderer(),
'sort' => 900, 'sort' => 900,
'part' => 'limitcount'
], ],
'for_update' => 'for_update' =>
[ [
'renderer' => new \Magento\Framework\DB\Select\ForUpdateRenderer(), 'renderer' => new \Magento\Framework\DB\Select\ForUpdateRenderer(),
'sort' => 1000, 'sort' => 1000,
'part' => 'forupdate'
], ],
] ]
) )
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment