ConvertSerializedDataToJson.php 3.1 KB

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