Skip to content

Commit 65c0b93

Browse files
author
Igor Melnikov
committed
MAGETWO-67166: Introduce FieldToConvert and AggregatedFieldDataConverter
- introducing FieldToConvert and AggregatedFieldDataConverter - refactoring upgrade scripts
1 parent ac0763d commit 65c0b93

File tree

12 files changed

+555
-346
lines changed

12 files changed

+555
-346
lines changed

app/code/Magento/CatalogRule/Setup/UpgradeData.php

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66

77
namespace Magento\CatalogRule\Setup;
88

9-
use Magento\Framework\DB\FieldDataConverterFactory;
9+
use Magento\Framework\DB\AggregatedFieldDataConverter;
1010
use Magento\Framework\DB\DataConverter\SerializedToJson;
11+
use Magento\Framework\DB\FieldToConvert;
1112
use Magento\Framework\Setup\ModuleContextInterface;
1213
use Magento\Framework\Setup\ModuleDataSetupInterface;
1314
use Magento\Framework\Setup\UpgradeDataInterface;
@@ -17,26 +18,26 @@
1718
class UpgradeData implements UpgradeDataInterface
1819
{
1920
/**
20-
* @var FieldDataConverterFactory
21+
* @var MetadataPool
2122
*/
22-
private $fieldDataConverterFactory;
23+
private $metadataPool;
2324

2425
/**
25-
* @var MetadataPool
26+
* @var AggregatedFieldDataConverter
2627
*/
27-
private $metadataPool;
28+
private $aggregatedFieldConverter;
2829

2930
/**
3031
* UpgradeData constructor.
3132
*
32-
* @param FieldDataConverterFactory $fieldDataConverterFactory
33+
* @param AggregatedFieldDataConverter $aggregatedFieldConverter
3334
* @param MetadataPool $metadataPool
3435
*/
3536
public function __construct(
36-
FieldDataConverterFactory $fieldDataConverterFactory,
37+
AggregatedFieldDataConverter $aggregatedFieldConverter,
3738
MetadataPool $metadataPool
3839
) {
39-
$this->fieldDataConverterFactory = $fieldDataConverterFactory;
40+
$this->aggregatedFieldConverter = $aggregatedFieldConverter;
4041
$this->metadataPool = $metadataPool;
4142
}
4243

@@ -63,20 +64,23 @@ public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface
6364
*/
6465
public function convertSerializedDataToJson($setup)
6566
{
66-
$fieldDataConverter = $this->fieldDataConverterFactory->create(SerializedToJson::class);
6767
$metadata = $this->metadataPool->getMetadata(RuleInterface::class);
68-
69-
$fieldDataConverter->convert(
70-
$setup->getConnection(),
71-
$setup->getTable('catalogrule'),
72-
$metadata->getLinkField(),
73-
'conditions_serialized'
74-
);
75-
$fieldDataConverter->convert(
76-
$setup->getConnection(),
77-
$setup->getTable('catalogrule'),
78-
$metadata->getLinkField(),
79-
'actions_serialized'
68+
$this->aggregatedFieldConverter->convert(
69+
[
70+
new FieldToConvert(
71+
SerializedToJson::class,
72+
$setup->getTable('catalogrule'),
73+
$metadata->getLinkField(),
74+
'conditions_serialized'
75+
),
76+
new FieldToConvert(
77+
SerializedToJson::class,
78+
$setup->getTable('catalogrule'),
79+
$metadata->getLinkField(),
80+
'actions_serialized'
81+
),
82+
],
83+
$setup->getConnection()
8084
);
8185
}
8286
}

app/code/Magento/Cms/Setup/UpgradeData.php

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@
55
*/
66
namespace Magento\Cms\Setup;
77

8+
use Magento\Cms\Api\Data\BlockInterface;
9+
use Magento\Cms\Api\Data\PageInterface;
810
use Magento\Cms\Model\Page;
911
use Magento\Cms\Model\PageFactory;
12+
use Magento\Framework\DB\AggregatedFieldDataConverter;
13+
use Magento\Framework\DB\FieldToConvert;
1014
use Magento\Framework\EntityManager\MetadataPool;
1115
use Magento\Framework\Setup\ModuleContextInterface;
1216
use Magento\Framework\Setup\ModuleDataSetupInterface;
@@ -24,11 +28,6 @@ class UpgradeData implements UpgradeDataInterface
2428
*/
2529
private $pageFactory;
2630

27-
/**
28-
* @var \Magento\Framework\DB\FieldDataConverterFactory
29-
*/
30-
private $fieldDataConverterFactory;
31-
3231
/**
3332
* @var \Magento\Framework\DB\Select\QueryModifierFactory
3433
*/
@@ -39,22 +38,27 @@ class UpgradeData implements UpgradeDataInterface
3938
*/
4039
private $metadataPool;
4140

41+
/**
42+
* @var AggregatedFieldDataConverter
43+
*/
44+
private $aggregatedFieldConverter;
45+
4246
/**
4347
* UpgradeData constructor.
4448
*
4549
* @param PageFactory $pageFactory
46-
* @param \Magento\Framework\DB\FieldDataConverterFactory $fieldDataConverterFactory
50+
* @param AggregatedFieldDataConverter $aggregatedFieldConverter
4751
* @param \Magento\Framework\DB\Select\QueryModifierFactory $queryModifierFactory
4852
* @param MetadataPool $metadataPool
4953
*/
5054
public function __construct(
5155
PageFactory $pageFactory,
52-
\Magento\Framework\DB\FieldDataConverterFactory $fieldDataConverterFactory,
56+
AggregatedFieldDataConverter $aggregatedFieldConverter,
5357
\Magento\Framework\DB\Select\QueryModifierFactory $queryModifierFactory,
5458
MetadataPool $metadataPool
5559
) {
5660
$this->pageFactory = $pageFactory;
57-
$this->fieldDataConverterFactory = $fieldDataConverterFactory;
61+
$this->aggregatedFieldConverter = $aggregatedFieldConverter;
5862
$this->queryModifierFactory = $queryModifierFactory;
5963
$this->metadataPool = $metadataPool;
6064
}
@@ -84,10 +88,6 @@ public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface
8488
*/
8589
private function convertWidgetConditionsToJson(ModuleDataSetupInterface $setup)
8690
{
87-
$fieldDataConverter = $this->fieldDataConverterFactory->create(
88-
\Magento\Cms\Setup\ContentConverter::class
89-
);
90-
9191
$queryModifier = $this->queryModifierFactory->create(
9292
'like',
9393
[
@@ -97,22 +97,26 @@ private function convertWidgetConditionsToJson(ModuleDataSetupInterface $setup)
9797
]
9898
);
9999

100-
$blockMetadata = $this->metadataPool->getMetadata(\Magento\Cms\Api\Data\BlockInterface::class);
101-
$fieldDataConverter->convert(
102-
$setup->getConnection(),
103-
$setup->getTable('cms_block'),
104-
$blockMetadata->getIdentifierField(),
105-
'content',
106-
$queryModifier
107-
);
108-
109-
$pageMetadata = $this->metadataPool->getMetadata(\Magento\Cms\Api\Data\PageInterface::class);
110-
$fieldDataConverter->convert(
111-
$setup->getConnection(),
112-
$setup->getTable('cms_page'),
113-
$pageMetadata->getIdentifierField(),
114-
'content',
115-
$queryModifier
100+
$blockMetadata = $this->metadataPool->getMetadata(BlockInterface::class);
101+
$pageMetadata = $this->metadataPool->getMetadata(PageInterface::class);
102+
$this->aggregatedFieldConverter->convert(
103+
[
104+
new FieldToConvert(
105+
ContentConverter::class,
106+
$setup->getTable('cms_block'),
107+
$blockMetadata->getIdentifierField(),
108+
'content',
109+
$queryModifier
110+
),
111+
new FieldToConvert(
112+
ContentConverter::class,
113+
$setup->getTable('cms_page'),
114+
$pageMetadata->getIdentifierField(),
115+
'content',
116+
$queryModifier
117+
),
118+
],
119+
$setup->getConnection()
116120
);
117121
}
118122

app/code/Magento/Quote/Setup/ConvertSerializedDataToJson.php

Lines changed: 52 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
*/
66
namespace Magento\Quote\Setup;
77

8-
use Magento\Framework\DB\FieldDataConverterFactory;
8+
use Magento\Framework\DB\AggregatedFieldDataConverter;
9+
use Magento\Framework\DB\DataConverter\SerializedToJson;
10+
use Magento\Framework\DB\FieldToConvert;
911
use Magento\Framework\DB\Select\QueryModifierFactory;
1012
use Magento\Framework\DB\Query\Generator;
1113

@@ -19,11 +21,6 @@ class ConvertSerializedDataToJson
1921
*/
2022
private $quoteSetup;
2123

22-
/**
23-
* @var FieldDataConverterFactory
24-
*/
25-
private $fieldDataConverterFactory;
26-
2724
/**
2825
* @var QueryModifierFactory
2926
*/
@@ -34,22 +31,27 @@ class ConvertSerializedDataToJson
3431
*/
3532
private $queryGenerator;
3633

34+
/**
35+
* @var AggregatedFieldDataConverter
36+
*/
37+
private $aggregatedFieldConverter;
38+
3739
/**
3840
* Constructor
3941
*
4042
* @param QuoteSetup $quoteSetup
41-
* @param FieldDataConverterFactory $fieldDataConverterFactory
43+
* @param AggregatedFieldDataConverter $aggregatedFieldConverter
4244
* @param QueryModifierFactory $queryModifierFactory
4345
* @param Generator $queryGenerator
4446
*/
4547
public function __construct(
4648
QuoteSetup $quoteSetup,
47-
FieldDataConverterFactory $fieldDataConverterFactory,
49+
AggregatedFieldDataConverter $aggregatedFieldConverter,
4850
QueryModifierFactory $queryModifierFactory,
4951
Generator $queryGenerator
5052
) {
5153
$this->quoteSetup = $quoteSetup;
52-
$this->fieldDataConverterFactory = $fieldDataConverterFactory;
54+
$this->aggregatedFieldConverter = $aggregatedFieldConverter;
5355
$this->queryModifierFactory = $queryModifierFactory;
5456
$this->queryGenerator = $queryGenerator;
5557
}
@@ -63,27 +65,6 @@ public function __construct(
6365
*/
6466
public function convert()
6567
{
66-
$fieldDataConverter = $this->fieldDataConverterFactory->create(
67-
\Magento\Framework\DB\DataConverter\SerializedToJson::class
68-
);
69-
$fieldDataConverter->convert(
70-
$this->quoteSetup->getConnection(),
71-
$this->quoteSetup->getTable('quote_payment'),
72-
'payment_id',
73-
'additional_information'
74-
);
75-
$fieldDataConverter->convert(
76-
$this->quoteSetup->getConnection(),
77-
$this->quoteSetup->getTable('quote_payment'),
78-
'payment_id',
79-
'additional_data'
80-
);
81-
$fieldDataConverter->convert(
82-
$this->quoteSetup->getConnection(),
83-
$this->quoteSetup->getTable('quote_address'),
84-
'address_id',
85-
'applied_taxes'
86-
);
8768
$queryModifier = $this->queryModifierFactory->create(
8869
'in',
8970
[
@@ -99,13 +80,37 @@ public function convert()
9980
]
10081
]
10182
);
102-
$fieldDataConverter->convert(
103-
$this->quoteSetup->getConnection(),
104-
$this->quoteSetup->getTable('quote_item_option'),
105-
'option_id',
106-
'value',
107-
$queryModifier
83+
$this->aggregatedFieldConverter->convert(
84+
[
85+
new FieldToConvert(
86+
SerializedToJson::class,
87+
$this->quoteSetup->getTable('quote_payment'),
88+
'payment_id',
89+
'additional_information'
90+
),
91+
new FieldToConvert(
92+
SerializedToJson::class,
93+
$this->quoteSetup->getTable('quote_payment'),
94+
'payment_id',
95+
'additional_data'
96+
),
97+
new FieldToConvert(
98+
SerializedToJson::class,
99+
$this->quoteSetup->getTable('quote_address'),
100+
'address_id',
101+
'applied_taxes'
102+
),
103+
new FieldToConvert(
104+
SerializedToJson::class,
105+
$this->quoteSetup->getTable('quote_item_option'),
106+
'option_id',
107+
'value',
108+
$queryModifier
109+
),
110+
],
111+
$this->quoteSetup->getConnection()
108112
);
113+
109114
$select = $this->quoteSetup->getSetup()
110115
->getConnection()
111116
->select()
@@ -134,12 +139,17 @@ function ($id) {
134139
]
135140
]
136141
);
137-
$fieldDataConverter->convert(
138-
$this->quoteSetup->getConnection(),
139-
$this->quoteSetup->getTable('quote_item_option'),
140-
'option_id',
141-
'value',
142-
$queryModifier
142+
$this->aggregatedFieldConverter->convert(
143+
[
144+
new FieldToConvert(
145+
SerializedToJson::class,
146+
$this->quoteSetup->getTable('quote_item_option'),
147+
'option_id',
148+
'value',
149+
$queryModifier
150+
),
151+
],
152+
$this->quoteSetup->getConnection()
143153
);
144154
}
145155
}

0 commit comments

Comments
 (0)