Recurring.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\MysqlMq\Setup;
  7. use Magento\Framework\Setup\InstallSchemaInterface;
  8. use Magento\Framework\Setup\ModuleContextInterface;
  9. use Magento\Framework\Setup\SchemaSetupInterface;
  10. use Magento\Framework\MessageQueue\ConfigInterface as MessageQueueConfig;
  11. /**
  12. * Class Recurring
  13. */
  14. class Recurring implements InstallSchemaInterface
  15. {
  16. /**
  17. * @var MessageQueueConfig
  18. */
  19. private $messageQueueConfig;
  20. /**
  21. * @param MessageQueueConfig $messageQueueConfig
  22. */
  23. public function __construct(MessageQueueConfig $messageQueueConfig)
  24. {
  25. $this->messageQueueConfig = $messageQueueConfig;
  26. }
  27. /**
  28. * {@inheritdoc}
  29. */
  30. public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
  31. {
  32. $setup->startSetup();
  33. $binds = $this->messageQueueConfig->getBinds();
  34. $queues = [];
  35. foreach ($binds as $bind) {
  36. $queues[] = $bind[MessageQueueConfig::BIND_QUEUE];
  37. }
  38. $connection = $setup->getConnection();
  39. $existingQueues = $connection->fetchCol($connection->select()->from($setup->getTable('queue'), 'name'));
  40. $queues = array_unique(array_diff($queues, $existingQueues));
  41. /** Populate 'queue' table */
  42. if (!empty($queues)) {
  43. $connection->insertArray($setup->getTable('queue'), ['name'], $queues);
  44. }
  45. $setup->endSetup();
  46. }
  47. }