ConvertSerializedDataToJson.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\CatalogRule\Setup\Patch\Data;
  7. use Magento\Framework\EntityManager\MetadataPool;
  8. use Magento\Framework\Setup\ModuleDataSetupInterface;
  9. use Magento\Framework\Setup\Patch\DataPatchInterface;
  10. use Magento\Framework\Setup\Patch\PatchVersionInterface;
  11. use Magento\Framework\DB\AggregatedFieldDataConverter;
  12. use Magento\Framework\DB\DataConverter\SerializedToJson;
  13. use Magento\Framework\DB\FieldToConvert;
  14. use Magento\CatalogRule\Api\Data\RuleInterface;
  15. class ConvertSerializedDataToJson implements DataPatchInterface, PatchVersionInterface
  16. {
  17. /**
  18. * @var ModuleDataSetupInterface
  19. */
  20. private $moduleDataSetup;
  21. /**
  22. * @var MetadataPool
  23. */
  24. private $metadataPool;
  25. /**
  26. * @var AggregatedFieldDataConverter
  27. */
  28. private $aggregatedFieldDataConverter;
  29. /**
  30. * ConvertSerializedDataToJson constructor.
  31. * @param ModuleDataSetupInterface $moduleDataSetup
  32. * @param MetadataPool $metadataPool
  33. * @param AggregatedFieldDataConverter $aggregatedFieldDataConverter
  34. */
  35. public function __construct(
  36. ModuleDataSetupInterface $moduleDataSetup,
  37. MetadataPool $metadataPool,
  38. AggregatedFieldDataConverter $aggregatedFieldDataConverter
  39. ) {
  40. $this->moduleDataSetup = $moduleDataSetup;
  41. $this->metadataPool = $metadataPool;
  42. $this->aggregatedFieldDataConverter = $aggregatedFieldDataConverter;
  43. }
  44. /**
  45. * {@inheritdoc}
  46. */
  47. public function apply()
  48. {
  49. $metadata = $this->metadataPool->getMetadata(RuleInterface::class);
  50. $this->aggregatedFieldDataConverter->convert(
  51. [
  52. new FieldToConvert(
  53. SerializedToJson::class,
  54. $this->moduleDataSetup->getTable('catalogrule'),
  55. $metadata->getLinkField(),
  56. 'conditions_serialized'
  57. ),
  58. new FieldToConvert(
  59. SerializedToJson::class,
  60. $this->moduleDataSetup->getTable('catalogrule'),
  61. $metadata->getLinkField(),
  62. 'actions_serialized'
  63. ),
  64. ],
  65. $this->moduleDataSetup->getConnection()
  66. );
  67. }
  68. /**
  69. * {@inheritdoc}
  70. */
  71. public static function getDependencies()
  72. {
  73. return [
  74. UpdateClassAliasesForCatalogRules::class,
  75. ];
  76. }
  77. /**
  78. * {@inheritdoc}
  79. */
  80. public static function getVersion()
  81. {
  82. return '2.0.3';
  83. }
  84. /**
  85. * {@inheritdoc}
  86. */
  87. public function getAliases()
  88. {
  89. return [];
  90. }
  91. }