SchemaConfig.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Setup\Declaration\Schema;
  7. use Magento\Framework\Config\FileResolverByModule;
  8. use Magento\Framework\Setup\Declaration\Schema\Db\SchemaBuilder as DbSchemaBuilder;
  9. use Magento\Framework\Setup\Declaration\Schema\Declaration\SchemaBuilder as DeclarativeSchemaBuilder;
  10. use Magento\Framework\Setup\Declaration\Schema\Declaration\ReaderComposite;
  11. use Magento\Framework\Setup\Declaration\Schema\Dto\SchemaFactory;
  12. /**
  13. * {@inheritdoc}
  14. */
  15. class SchemaConfig implements SchemaConfigInterface
  16. {
  17. /**
  18. * @var DbSchemaBuilder
  19. */
  20. private $dbSchemaBuilder;
  21. /**
  22. * @var DeclarativeSchemaBuilder
  23. */
  24. private $declarativeSchemaBuilder;
  25. /**
  26. * @var SchemaFactory
  27. */
  28. private $schemaFactory;
  29. /**
  30. * @var ReaderComposite
  31. */
  32. private $readerComposite;
  33. /**
  34. * Constructor.
  35. *
  36. * @param DbSchemaBuilder $dbSchemaBuilder
  37. * @param DeclarativeSchemaBuilder $declarativeSchemaBuilder
  38. * @param SchemaFactory $schemaFactory
  39. * @param ReaderComposite $readerComposite
  40. */
  41. public function __construct(
  42. DbSchemaBuilder $dbSchemaBuilder,
  43. DeclarativeSchemaBuilder $declarativeSchemaBuilder,
  44. SchemaFactory $schemaFactory,
  45. ReaderComposite $readerComposite
  46. ) {
  47. $this->dbSchemaBuilder = $dbSchemaBuilder;
  48. $this->declarativeSchemaBuilder = $declarativeSchemaBuilder;
  49. $this->schemaFactory = $schemaFactory;
  50. $this->readerComposite = $readerComposite;
  51. }
  52. /**
  53. * @inheritdoc
  54. */
  55. public function getDbConfig()
  56. {
  57. $schema = $this->schemaFactory->create();
  58. $schema = $this->dbSchemaBuilder->build($schema);
  59. return $schema;
  60. }
  61. /**
  62. * @inheritdoc
  63. */
  64. public function getDeclarationConfig()
  65. {
  66. $schema = $this->schemaFactory->create();
  67. $data = $this->readerComposite->read(FileResolverByModule::ALL_MODULES);
  68. $this->declarativeSchemaBuilder->addTablesData($data['table']);
  69. $schema = $this->declarativeSchemaBuilder->build($schema);
  70. return $schema;
  71. }
  72. }