Completed
Push — master ( 4af1ba...6f7ebd )
by Nate
52s
created

SObject::upsert()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 19

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 19
ccs 0
cts 19
cp 0
rs 9.6333
c 0
b 0
f 0
cc 1
nc 1
nop 7
crap 2
1
<?php
2
3
/**
4
 * @copyright  Copyright (c) Flipbox Digital Limited
5
 * @license    https://github.com/flipbox/salesforce/blob/master/LICENSE.md
6
 * @link       https://github.com/flipbox/salesforce
7
 */
8
9
namespace Flipbox\Salesforce\Resources;
10
11
use Flipbox\Relay\Builder\RelayBuilderInterface;
12
use Flipbox\Relay\Salesforce\Builder\Resources\SObject\Basic;
13
use Flipbox\Relay\Salesforce\Builder\Resources\SObject\Describe;
14
use Flipbox\Relay\Salesforce\Builder\Resources\SObject\Row\Create;
15
use Flipbox\Relay\Salesforce\Builder\Resources\SObject\Row\Delete;
16
use Flipbox\Relay\Salesforce\Builder\Resources\SObject\Row\Get;
17
use Flipbox\Relay\Salesforce\Builder\Resources\SObject\Row\Update;
18
use Flipbox\Relay\Salesforce\Builder\Resources\SObject\Row\Upsert;
19
use Flipbox\Salesforce\Connections\ConnectionInterface;
20
use Flipbox\Salesforce\Salesforce;
21
use Psr\Http\Message\ResponseInterface;
22
use Psr\Log\LoggerInterface;
23
use Psr\SimpleCache\CacheInterface;
24
25
/**
26
 * @author Flipbox Factory <[email protected]>
27
 * @since 3.0.0
28
 */
29
class SObject
30
{
31
32
    /**
33
     * The resource name
34
     */
35
    const SALESFORCE_RESOURCE = 'object';
36
37
38
    /*******************************************
39
     * BASIC
40
     *******************************************/
41
42
    /**
43
     * @param ConnectionInterface $connection
44
     * @param CacheInterface $cache
45
     * @param string $object
46
     * @param LoggerInterface|null $logger
47
     * @param array $config
48
     * @return callable
49
     */
50
    public static function basicRelay(
51
        ConnectionInterface $connection,
52
        CacheInterface $cache,
53
        string $object,
54
        LoggerInterface $logger = null,
55
        array $config = []
56
    ): callable {
57
        /** @var RelayBuilderInterface $builder */
58
        $builder = new Basic(
59
            $connection,
60
            $connection,
61
            $cache,
62
            $object,
63
            $logger ?: Salesforce::getLogger(),
64
            $config
65
        );
66
67
        return $builder->build();
68
    }
69
70
71
    /**
72
     * @param ConnectionInterface $connection
73
     * @param CacheInterface $cache
74
     * @param string $object
75
     * @param LoggerInterface|null $logger
76
     * @param array $config
77
     * @return ResponseInterface
78
     */
79
    public static function basic(
80
        ConnectionInterface $connection,
81
        CacheInterface $cache,
82
        string $object,
83
        LoggerInterface $logger = null,
84
        array $config = []
85
    ): ResponseInterface {
86
        return static::basicRelay(
87
            $connection,
88
            $cache,
89
            $object,
90
            $logger,
91
            $config
92
        )();
93
    }
94
95
    /*******************************************
96
     * DESCRIBE
97
     *******************************************/
98
99
    /**
100
     * @param string $object
101
     * @param ConnectionInterface $connection
102
     * @param CacheInterface $cache
103
     * @param LoggerInterface $logger
104
     * @param array $config
105
     * @return ResponseInterface
106
     */
107
    public static function describe(
108
        ConnectionInterface $connection,
109
        CacheInterface $cache,
110
        string $object,
111
        LoggerInterface $logger = null,
112
        array $config = []
113
    ): ResponseInterface {
114
        return static::describeRelay(
115
            $connection,
116
            $cache,
117
            $object,
118
            $logger,
119
            $config
120
        )();
121
    }
122
123
    /**
124
     * @param string $object
125
     * @param ConnectionInterface $connection
126
     * @param CacheInterface $cache
127
     * @param LoggerInterface $logger
128
     * @param array $config
129
     * @return callable
130
     */
131
    public static function describeRelay(
132
        ConnectionInterface $connection,
133
        CacheInterface $cache,
134
        string $object,
135
        LoggerInterface $logger = null,
136
        array $config = []
137
    ): callable {
138
        /** @var RelayBuilderInterface $builder */
139
        $builder = new Describe(
140
            $connection,
141
            $connection,
142
            $cache,
143
            $object,
144
            $logger ?: Salesforce::getLogger(),
145
            $config
146
        );
147
148
        return $builder->build();
149
    }
150
151
152
    /*******************************************
153
     * CREATE
154
     *******************************************/
155
156
    /**
157
     * @param string $object
158
     * @param array $payload
159
     * @param ConnectionInterface $connection
160
     * @param LoggerInterface $logger
161
     * @param array $config
162
     * @return ResponseInterface
163
     */
164
    public static function create(
165
        ConnectionInterface $connection,
166
        string $object,
167
        array $payload,
168
        LoggerInterface $logger = null,
169
        array $config = []
170
    ): ResponseInterface {
171
        return static::createRelay(
172
            $connection,
173
            $object,
174
            $payload,
175
            $logger,
176
            $config
177
        )();
178
    }
179
180
    /**
181
     * @param string $object
182
     * @param array $payload
183
     * @param ConnectionInterface $connection
184
     * @param LoggerInterface $logger
185
     * @param array $config
186
     * @return callable
187
     */
188
    public static function createRelay(
189
        ConnectionInterface $connection,
190
        string $object,
191
        array $payload,
192
        LoggerInterface $logger = null,
193
        array $config = []
194
    ): callable {
195
196
        /** @var RelayBuilderInterface $builder */
197
        $builder = new Create(
198
            $connection,
199
            $connection,
200
            $object,
201
            $payload,
202
            $logger ?: Salesforce::getLogger(),
203
            $config
204
        );
205
206
        return $builder->build();
207
    }
208
209
210
    /*******************************************
211
     * READ
212
     *******************************************/
213
214
    /**
215
     * @param ConnectionInterface $connection
216
     * @param CacheInterface $cache
217
     * @param string $object
218
     * @param string $id
219
     * @param LoggerInterface|null $logger
220
     * @param array $config
221
     * @return ResponseInterface
222
     */
223
    public static function read(
224
        ConnectionInterface $connection,
225
        CacheInterface $cache,
226
        string $object,
227
        string $id,
228
        LoggerInterface $logger = null,
229
        array $config = []
230
    ): ResponseInterface {
231
        return static::readRelay(
232
            $connection,
233
            $cache,
234
            $object,
235
            $id,
236
            $logger,
237
            $config
238
        )();
239
    }
240
241
242
    /**
243
     * @param ConnectionInterface $connection
244
     * @param CacheInterface $cache
245
     * @param string $object
246
     * @param string $id
247
     * @param LoggerInterface|null $logger
248
     * @param array $config
249
     * @return callable
250
     */
251
    public static function readRelay(
252
        ConnectionInterface $connection,
253
        CacheInterface $cache,
254
        string $object,
255
        string $id,
256
        LoggerInterface $logger = null,
257
        array $config = []
258
    ): callable {
259
        /** @var RelayBuilderInterface $builder */
260
        $builder = new Get(
261
            $connection,
262
            $connection,
263
            $cache,
264
            $object,
265
            $id,
266
            $logger ?: Salesforce::getLogger(),
267
            $config
268
        );
269
270
        return $builder->build();
271
    }
272
273
    /*******************************************
274
     * UPDATE
275
     *******************************************/
276
277
    /**
278
     * @param string $object
279
     * @param string $id
280
     * @param array $payload
281
     * @param ConnectionInterface $connection
282
     * @param CacheInterface $cache
283
     * @param LoggerInterface|null $logger
284
     * @param array $config
285
     * @return ResponseInterface
286
     */
287
    public static function update(
288
        ConnectionInterface $connection,
289
        CacheInterface $cache,
290
        string $object,
291
        array $payload,
292
        string $id,
293
        LoggerInterface $logger = null,
294
        array $config = []
295
    ): ResponseInterface {
296
        return static::updateRelay(
297
            $connection,
298
            $cache,
299
            $object,
300
            $payload,
301
            $id,
302
            $logger,
303
            $config
304
        )();
305
    }
306
307
    /**
308
     * @param string $object
309
     * @param string $id
310
     * @param array $payload
311
     * @param ConnectionInterface $connection
312
     * @param CacheInterface $cache
313
     * @param LoggerInterface|null $logger
314
     * @param array $config
315
     * @return callable
316
     */
317
    public static function updateRelay(
318
        ConnectionInterface $connection,
319
        CacheInterface $cache,
320
        string $object,
321
        array $payload,
322
        string $id,
323
        LoggerInterface $logger = null,
324
        array $config = []
325
    ): callable {
326
        /** @var RelayBuilderInterface $builder */
327
        $builder = new Update(
328
            $connection,
329
            $connection,
330
            $cache,
331
            $object,
332
            $payload,
333
            $id,
334
            $logger ?: Salesforce::getLogger(),
335
            $config
336
        );
337
338
        return $builder->build();
339
    }
340
341
342
    /*******************************************
343
     * UPSERT
344
     *******************************************/
345
346
    /**
347
     * @param ConnectionInterface $connection
348
     * @param CacheInterface $cache
349
     * @param string $object
350
     * @param array $payload
351
     * @param string|null $id
352
     * @param LoggerInterface|null $logger
353
     * @param array $config
354
     * @return callable
355
     */
356
    public static function upsertRelay(
357
        ConnectionInterface $connection,
358
        CacheInterface $cache,
359
        string $object,
360
        array $payload,
361
        string $id = null,
362
        LoggerInterface $logger = null,
363
        array $config = []
364
    ): callable {
365
366
        /** @var RelayBuilderInterface $builder */
367
        $builder = new Upsert(
368
            $connection,
369
            $connection,
370
            $cache,
371
            $object,
372
            $payload,
373
            empty($id) ? null : $id,
374
            $logger ?: Salesforce::getLogger(),
375
            $config
376
        );
377
378
        return $builder->build();
379
    }
380
381
    /**
382
     * @param ConnectionInterface $connection
383
     * @param CacheInterface $cache
384
     * @param string $object
385
     * @param array $payload
386
     * @param string|null $id
387
     * @param LoggerInterface|null $logger
388
     * @param array $config
389
     * @return ResponseInterface
390
     */
391
    public static function upsert(
392
        ConnectionInterface $connection,
393
        CacheInterface $cache,
394
        string $object,
395
        array $payload,
396
        string $id = null,
397
        LoggerInterface $logger = null,
398
        array $config = []
399
    ): ResponseInterface {
400
        return static::upsertRelay(
401
            $connection,
402
            $cache,
403
            $object,
404
            $payload,
405
            $id,
406
            $logger,
407
            $config
408
        )();
409
    }
410
411
412
    /*******************************************
413
     * DELETE
414
     *******************************************/
415
416
    /**
417
     * @param string $object
418
     * @param string $id
419
     * @param ConnectionInterface $connection
420
     * @param CacheInterface $cache
421
     * @param LoggerInterface $logger
422
     * @param array $config
423
     * @return ResponseInterface
424
     */
425
    public static function delete(
426
        ConnectionInterface $connection,
427
        CacheInterface $cache,
428
        string $object,
429
        string $id,
430
        LoggerInterface $logger = null,
431
        array $config = []
432
    ): ResponseInterface {
433
        return static::deleteRelay(
434
            $connection,
435
            $cache,
436
            $object,
437
            $id,
438
            $logger,
439
            $config
440
        )();
441
    }
442
443
    /**
444
     * @param string $object
445
     * @param string $id
446
     * @param ConnectionInterface $connection
447
     * @param CacheInterface $cache
448
     * @param LoggerInterface $logger
449
     * @param array $config
450
     * @return callable
451
     */
452
    public static function deleteRelay(
453
        ConnectionInterface $connection,
454
        CacheInterface $cache,
455
        string $object,
456
        string $id,
457
        LoggerInterface $logger = null,
458
        array $config = []
459
    ): callable {
460
        /** @var RelayBuilderInterface $builder */
461
        $builder = new Delete(
462
            $connection,
463
            $connection,
464
            $cache,
465
            $object,
466
            $id,
467
            $logger ?: Salesforce::getLogger(),
468
            $config
469
        );
470
471
        return $builder->build();
472
    }
473
}
474