Completed
Push — master ( 226c3f...287fce )
by Tim
10s
created

SqlStatementRepository   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 277
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 1
dl 0
loc 277
ccs 6
cts 6
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 11 2
1
<?php
2
3
/**
4
 * TechDivision\Import\Product\Utils\SqlStatements
5
 *
6
 * NOTICE OF LICENSE
7
 *
8
 * This source file is subject to the Open Software License (OSL 3.0)
9
 * that is available through the world-wide-web at this URL:
10
 * http://opensource.org/licenses/osl-3.0.php
11
 *
12
 * PHP version 5
13
 *
14
 * @author    Tim Wagner <[email protected]>
15
 * @copyright 2016 TechDivision GmbH <[email protected]>
16
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
17
 * @link      https://github.com/techdivision/import-product
18
 * @link      http://www.techdivision.com
19
 */
20
21
namespace TechDivision\Import\Product\Repositories;
22
23
use TechDivision\Import\Product\Utils\SqlStatementKeys;
24
25
/**
26
 * Repository class with the SQL statements to use.
27
 *
28
 * @author    Tim Wagner <[email protected]>
29
 * @copyright 2016 TechDivision GmbH <[email protected]>
30
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
31
 * @link      https://github.com/techdivision/import-product
32
 * @link      http://www.techdivision.com
33
 */
34
class SqlStatementRepository extends \TechDivision\Import\Repositories\SqlStatementRepository
35
{
36
37
    /**
38
     * The SQL statements.
39
     *
40
     * @var array
41
     */
42
    private $statements = array(
0 ignored issues
show
Comprehensibility introduced by
Consider using a different property name as you override a private property of the parent class.
Loading history...
43
        SqlStatementKeys::PRODUCT =>
44
            'SELECT * FROM catalog_product_entity WHERE sku = :sku',
45
        SqlStatementKeys::PRODUCTS =>
46
            'SELECT * FROM catalog_product_entity',
47
        SqlStatementKeys::PRODUCT_WEBSITE =>
48
            'SELECT * FROM catalog_product_website WHERE product_id = :product_id AND website_id = :website_id',
49
        SqlStatementKeys::PRODUCT_DATETIMES =>
50
            'SELECT *
51
               FROM catalog_product_entity_datetime
52
              WHERE entity_id = :pk
53
                AND store_id = :store_id',
54
        SqlStatementKeys::PRODUCT_DECIMALS =>
55
            'SELECT *
56
               FROM catalog_product_entity_decimal
57
              WHERE entity_id = :pk
58
                AND store_id = :store_id',
59
        SqlStatementKeys::PRODUCT_INTS =>
60
            'SELECT *
61
               FROM catalog_product_entity_int
62
              WHERE entity_id = :pk
63
                AND store_id = :store_id',
64
        SqlStatementKeys::PRODUCT_TEXTS =>
65
            'SELECT *
66
               FROM catalog_product_entity_text
67
              WHERE entity_id = :pk
68
                AND store_id = :store_id',
69
        SqlStatementKeys::PRODUCT_VARCHARS =>
70
            'SELECT *
71
               FROM catalog_product_entity_varchar
72
              WHERE entity_id = :pk
73
                AND store_id = :store_id',
74
        SqlStatementKeys::PRODUCT_VARCHAR_BY_ATTRIBUTE_CODE_AND_ENTITY_TYPE_ID_AND_STORE_ID_AND_VALUE =>
75
            'SELECT t1.*
76
               FROM catalog_product_entity_varchar t1,
77
                    eav_attribute t2
78
              WHERE t2.attribute_code = :attribute_code
79
                AND t2.entity_type_id = :entity_type_id
80
                AND t1.attribute_id = t2.attribute_id
81
                AND t1.store_id = :store_id
82
                AND t1.value = :value',
83
        SqlStatementKeys::CATEGORY_PRODUCT =>
84
            'SELECT * FROM catalog_category_product WHERE category_id = :category_id AND product_id = :product_id',
85
        SqlStatementKeys::CATEGORY_PRODUCT_BY_SKU =>
86
            'SELECT t1.*
87
               FROM catalog_category_product t1,
88
                    catalog_product_entity t2
89
              WHERE t2.sku = :sku
90
                AND t1.product_id = t2.entity_id',
91
        SqlStatementKeys::STOCK_STATUS =>
92
            'SELECT * FROM cataloginventory_stock_status WHERE product_id = :product_id AND website_id = :website_id AND stock_id = :stock_id',
93
        SqlStatementKeys::STOCK_ITEM =>
94
            'SELECT * FROM cataloginventory_stock_item WHERE product_id = :product_id AND website_id = :website_id AND stock_id = :stock_id',
95
        SqlStatementKeys::CREATE_PRODUCT =>
96
            'INSERT
97
               INTO catalog_product_entity
98
                    (sku,
99
                     created_at,
100
                     updated_at,
101
                     has_options,
102
                     required_options,
103
                     type_id,
104
                     attribute_set_id)
105
             VALUES (:sku,
106
                     :created_at,
107
                     :updated_at,
108
                     :has_options,
109
                     :required_options,
110
                     :type_id,
111
                     :attribute_set_id)',
112
        SqlStatementKeys::UPDATE_PRODUCT =>
113
            'UPDATE catalog_product_entity
114
                SET sku = :sku,
115
                   created_at = :created_at,
116
                    updated_at = :updated_at,
117
                    has_options = :has_options,
118
                    required_options = :required_options,
119
                    type_id = :type_id,
120
                    attribute_set_id = :attribute_set_id
121
              WHERE entity_id = :entity_id',
122
        SqlStatementKeys::CREATE_PRODUCT_WEBSITE =>
123
            'INSERT
124
               INTO catalog_product_website
125
                    (product_id,
126
                     website_id)
127
             VALUES (:product_id,
128
                     :website_id)',
129
        SqlStatementKeys::CREATE_CATEGORY_PRODUCT =>
130
            'INSERT
131
               INTO catalog_category_product
132
                    (category_id,
133
                     product_id,
134
                     position)
135
             VALUES (:category_id,
136
                     :product_id,
137
                     :position)',
138
        SqlStatementKeys::UPDATE_CATEGORY_PRODUCT =>
139
            'UPDATE catalog_category_product
140
                SET category_id = :category_id,
141
                    product_id = :product_id,
142
                    position = :position
143
             WHERE  entity_id = :entity_id',
144
        SqlStatementKeys::CREATE_PRODUCT_DATETIME =>
145
            'INSERT
146
               INTO catalog_product_entity_datetime
147
                    (entity_id,
148
                     attribute_id,
149
                     store_id,
150
                     value)
151
            VALUES (:entity_id,
152
                    :attribute_id,
153
                    :store_id,
154
                    :value)',
155
        SqlStatementKeys::UPDATE_PRODUCT_DATETIME =>
156
            'UPDATE catalog_product_entity_datetime
157
                SET entity_id = :entity_id,
158
                    attribute_id = :attribute_id,
159
                    store_id = :store_id,
160
                    value = :value
161
              WHERE value_id = :value_id',
162
        SqlStatementKeys::DELETE_PRODUCT_DATETIME =>
163
            'DELETE
164
               FROM catalog_product_entity_datetime
165
              WHERE value_id = :value_id',
166
        SqlStatementKeys::CREATE_PRODUCT_DECIMAL =>
167
            'INSERT
168
               INTO catalog_product_entity_decimal
169
                    (entity_id,
170
                     attribute_id,
171
                     store_id,
172
                     value)
173
            VALUES (:entity_id,
174
                    :attribute_id,
175
                    :store_id,
176
                    :value)',
177
        SqlStatementKeys::UPDATE_PRODUCT_DECIMAL =>
178
            'UPDATE catalog_product_entity_decimal
179
                SET entity_id = :entity_id,
180
                    attribute_id = :attribute_id,
181
                    store_id = :store_id,
182
                    value = :value
183
              WHERE value_id = :value_id',
184
        SqlStatementKeys::DELETE_PRODUCT_DECIMAL =>
185
            'DELETE
186
               FROM catalog_product_entity_decimal
187
              WHERE value_id = :value_id',
188
        SqlStatementKeys::CREATE_PRODUCT_INT =>
189
            'INSERT
190
               INTO catalog_product_entity_int
191
                    (entity_id,
192
                     attribute_id,
193
                     store_id,
194
                     value)
195
             VALUES (:entity_id,
196
                     :attribute_id,
197
                     :store_id,
198
                     :value)',
199
        SqlStatementKeys::UPDATE_PRODUCT_INT =>
200
            'UPDATE catalog_product_entity_int
201
                SET entity_id = :entity_id,
202
                    attribute_id = :attribute_id,
203
                    store_id = :store_id,
204
                    value = :value
205
              WHERE value_id = :value_id',
206
        SqlStatementKeys::DELETE_PRODUCT_INT =>
207
            'DELETE
208
               FROM catalog_product_entity_int
209
              WHERE value_id = :value_id',
210
        SqlStatementKeys::CREATE_PRODUCT_VARCHAR =>
211
            'INSERT
212
               INTO catalog_product_entity_varchar
213
                    (entity_id,
214
                     attribute_id,
215
                     store_id,
216
                     value)
217
             VALUES (:entity_id,
218
                     :attribute_id,
219
                     :store_id,
220
                     :value)',
221
        SqlStatementKeys::UPDATE_PRODUCT_VARCHAR =>
222
            'UPDATE catalog_product_entity_varchar
223
                SET entity_id = :entity_id,
224
                    attribute_id = :attribute_id,
225
                    store_id = :store_id,
226
                    value = :value
227
              WHERE value_id = :value_id',
228
        SqlStatementKeys::DELETE_PRODUCT_VARCHAR =>
229
            'DELETE
230
               FROM catalog_product_entity_varchar
231
              WHERE value_id = :value_id',
232
        SqlStatementKeys::CREATE_PRODUCT_TEXT =>
233
            'INSERT
234
               INTO catalog_product_entity_text
235
                    (entity_id,
236
                     attribute_id,
237
                     store_id,
238
                     value)
239
             VALUES (:entity_id,
240
                     :attribute_id,
241
                     :store_id,
242
                     :value)',
243
        SqlStatementKeys::UPDATE_PRODUCT_TEXT =>
244
            'UPDATE catalog_product_entity_text
245
                SET entity_id = :entity_id,
246
                    attribute_id = :attribute_id,
247
                    store_id = :store_id,
248
                    value = :value
249
              WHERE value_id = :value_id',
250
        SqlStatementKeys::DELETE_PRODUCT_TEXT =>
251
            'DELETE
252
               FROM catalog_product_entity_text
253
              WHERE value_id = :value_id',
254
        SqlStatementKeys::CREATE_STOCK_STATUS =>
255
            'INSERT INTO cataloginventory_stock_status (%s) VALUES (:%s)',
256
        SqlStatementKeys::UPDATE_STOCK_STATUS =>
257
            'UPDATE cataloginventory_stock_status SET %s WHERE %s',
258
        SqlStatementKeys::CREATE_STOCK_ITEM =>
259
            'INSERT INTO cataloginventory_stock_item (%s) VALUES (:%s)',
260
        SqlStatementKeys::UPDATE_STOCK_ITEM =>
261
            'UPDATE cataloginventory_stock_item SET %s WHERE %s',
262
        SqlStatementKeys::DELETE_PRODUCT =>
263
            'DELETE
264
               FROM catalog_product_entity
265
              WHERE sku = :sku',
266
        SqlStatementKeys::DELETE_STOCK_STATUS_BY_SKU =>
267
            'DELETE cataloginventory_stock_status
268
               FROM cataloginventory_stock_status
269
         INNER JOIN catalog_product_entity
270
              WHERE catalog_product_entity.sku = :sku
271
                AND cataloginventory_stock_status.product_id = catalog_product_entity.entity_id',
272
        SqlStatementKeys::DELETE_STOCK_ITEM_BY_SKU =>
273
            'DELETE cataloginventory_stock_item
274
               FROM cataloginventory_stock_item
275
         INNER JOIN catalog_product_entity
276
              WHERE catalog_product_entity.sku = :sku
277
                AND cataloginventory_stock_item.product_id = catalog_product_entity.entity_id',
278
        SqlStatementKeys::DELETE_PRODUCT_WEBSITE_BY_SKU =>
279
            'DELETE catalog_product_website
280
               FROM catalog_product_website
281
         INNER JOIN catalog_product_entity
282
              WHERE catalog_product_entity.sku = :sku
283
                AND catalog_product_website.product_id = catalog_product_entity.entity_id',
284
        SqlStatementKeys::DELETE_CATEGORY_PRODUCT =>
285
            'DELETE
286
               FROM catalog_category_product
287
              WHERE entity_id = :entity_id',
288
        SqlStatementKeys::DELETE_CATEGORY_PRODUCT_BY_SKU =>
289
            'DELETE catalog_category_product
290
               FROM catalog_category_product
291
         INNER JOIN catalog_product_entity
292
              WHERE catalog_product_entity.sku = :sku
293
                AND catalog_category_product.product_id = catalog_product_entity.entity_id'
294
    );
295
296
    /**
297
     * Initialize the the SQL statements.
298
     */
299 1
    public function __construct()
300
    {
301
302
        // call the parent constructor
303 1
        parent::__construct();
304
305
        // merge the class statements
306 1
        foreach ($this->statements as $key => $statement) {
307 1
            $this->preparedStatements[$key] = $statement;
308 1
        }
309 1
    }
310
}
311