1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
use Magento\TestFramework\Helper\Bootstrap;
use Magento\Framework\Bulk\OperationInterface;
/**
* @var $resource Magento\Framework\App\ResourceConnection
*/
$resource = Bootstrap::getObjectManager()->get(\Magento\Framework\App\ResourceConnection::class);
$connection = $resource->getConnection();
$bulkTable = $resource->getTableName('magento_bulk');
$operationTable = $resource->getTableName('magento_operation');
$bulks = [
'not_started' => [
'uuid' => 'bulk-uuid-1',
'user_id' => 1,
'user_type' => \Magento\Authorization\Model\UserContextInterface::USER_TYPE_ADMIN,
'description' => 'Bulk Description',
'operation_count' => 1,
],
'in_progress_success' => [
'uuid' => 'bulk-uuid-2',
'user_id' => 1,
'user_type' => \Magento\Authorization\Model\UserContextInterface::USER_TYPE_ADMIN,
'description' => 'Bulk Description',
'operation_count' => 3,
],
'in_progress_failed' => [
'uuid' => 'bulk-uuid-3',
'user_id' => 1,
'user_type' => \Magento\Authorization\Model\UserContextInterface::USER_TYPE_ADMIN,
'description' => 'Bulk Description',
'operation_count' => 2,
],
'finish_success' => [
'uuid' => 'bulk-uuid-4',
'user_id' => 1,
'user_type' => \Magento\Authorization\Model\UserContextInterface::USER_TYPE_ADMIN,
'description' => 'Bulk Description',
'operation_count' => 1,
],
'finish_failed' => [
'uuid' => 'bulk-uuid-5',
'user_id' => 1,
'user_type' => \Magento\Authorization\Model\UserContextInterface::USER_TYPE_ADMIN,
'description' => 'Bulk Description',
'operation_count' => 2,
],
];
// Only processed operations are saved into database (i.e. operations that are not in 'open' state)
$operations = [
[
'bulk_uuid' => 'bulk-uuid-2',
'topic_name' => 'topic-3',
'serialized_data' => json_encode(['entity_id' => 2]),
'status' => OperationInterface::STATUS_TYPE_COMPLETE,
'error_code' => null,
'result_message' => null,
],
[
'bulk_uuid' => 'bulk-uuid-3',
'topic_name' => 'topic-3',
'serialized_data' => json_encode(['entity_id' => 3]),
'status' => OperationInterface::STATUS_TYPE_RETRIABLY_FAILED,
'error_code' => 1111,
'result_message' => 'Something went wrong during your request',
],
[
'bulk_uuid' => 'bulk-uuid-4',
'topic_name' => 'topic-4',
'serialized_data' => json_encode(['entity_id' => 4]),
'status' => OperationInterface::STATUS_TYPE_COMPLETE,
'error_code' => null,
'result_message' => null,
],
[
'bulk_uuid' => 'bulk-uuid-5',
'topic_name' => 'topic-4',
'serialized_data' => json_encode(['entity_id' => 5, 'meta_information' => 'Test']),
'status' => OperationInterface::STATUS_TYPE_NOT_RETRIABLY_FAILED,
'error_code' => 1111,
'result_message' => 'Something went wrong during your request',
],
[
'bulk_uuid' => 'bulk-uuid-5',
'topic_name' => 'topic-4',
'serialized_data' => json_encode(['entity_id' => 5]),
'status' => OperationInterface::STATUS_TYPE_RETRIABLY_FAILED,
'error_code' => 2222,
'result_message' => 'Entity with ID=4 does not exist',
],
];
$bulkQuery = "INSERT INTO {$bulkTable} (`uuid`, `user_id`, `user_type`, `description`, `operation_count`)"
. " VALUES (:uuid, :user_id, :user_type, :description, :operation_count);";
foreach ($bulks as $bulk) {
$connection->query($bulkQuery, $bulk);
}
$operationQuery = "INSERT INTO {$operationTable}"
. " (`bulk_uuid`, `topic_name`, `serialized_data`, `status`, `error_code`, `result_message`)"
. " VALUES (:bulk_uuid, :topic_name, :serialized_data, :status, :error_code, :result_message);";
foreach ($operations as $operation) {
$connection->query($operationQuery, $operation);
}