FromAssembler.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Analytics\ReportXml\DB\Assembler;
  7. use Magento\Analytics\ReportXml\DB\ColumnsResolver;
  8. use Magento\Analytics\ReportXml\DB\SelectBuilder;
  9. use Magento\Analytics\ReportXml\DB\NameResolver;
  10. use Magento\Framework\App\ResourceConnection;
  11. /**
  12. * Assembles FROM condition
  13. */
  14. class FromAssembler implements AssemblerInterface
  15. {
  16. /**
  17. * @var NameResolver
  18. */
  19. private $nameResolver;
  20. /**
  21. * @var ColumnsResolver
  22. */
  23. private $columnsResolver;
  24. /**
  25. * @var ResourceConnection
  26. */
  27. private $resourceConnection;
  28. /**
  29. * @param NameResolver $nameResolver
  30. * @param ColumnsResolver $columnsResolver
  31. * @param ResourceConnection $resourceConnection
  32. */
  33. public function __construct(
  34. NameResolver $nameResolver,
  35. ColumnsResolver $columnsResolver,
  36. ResourceConnection $resourceConnection
  37. ) {
  38. $this->nameResolver = $nameResolver;
  39. $this->columnsResolver = $columnsResolver;
  40. $this->resourceConnection = $resourceConnection;
  41. }
  42. /**
  43. * Assembles FROM condition
  44. *
  45. * @param SelectBuilder $selectBuilder
  46. * @param array $queryConfig
  47. * @return SelectBuilder
  48. */
  49. public function assemble(SelectBuilder $selectBuilder, $queryConfig)
  50. {
  51. $selectBuilder->setFrom(
  52. [
  53. $this->nameResolver->getAlias($queryConfig['source']) =>
  54. $this->resourceConnection
  55. ->getTableName($this->nameResolver->getName($queryConfig['source'])),
  56. ]
  57. );
  58. $columns = $this->columnsResolver->getColumns($selectBuilder, $queryConfig['source']);
  59. $selectBuilder->setColumns(array_merge($selectBuilder->getColumns(), $columns));
  60. return $selectBuilder;
  61. }
  62. }