Table   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 103
Duplicated Lines 0 %

Test Coverage

Coverage 34.78%

Importance

Changes 17
Bugs 0 Features 1
Metric Value
wmc 8
eloc 17
c 17
b 0
f 1
dl 0
loc 103
ccs 8
cts 23
cp 0.3478
rs 10

8 Methods

Rating   Name   Duplication   Size   Complexity  
A setClient() 0 3 1
A getName() 0 3 1
A __construct() 0 3 1
A create() 0 4 1
A delete() 0 4 1
A read() 0 4 1
A list() 0 4 1
A update() 0 4 1
1
<?php
2
/**
3
 * Project airtable-sdk-php
4
 * File: Table.php
5
 * Created by: tpojka
6
 * On: 26/03/2020
7
 */
8
9
declare(strict_types=1);
10
11
namespace Beachcasts\Airtable;
12
13
use Beachcasts\Airtable\Request\TableRequest as TableRequest;
14
use GuzzleHttp\Client;
15
use Psr\Http\Message\ResponseInterface;
16
17
/**
18
 * Class Table
19
 * @package Beachcasts\Airtable
20
 */
21
class Table
22
{
23
    /**
24
     * @var string|null $tableName
25
     */
26
    protected $tableName;
27
28
    /**
29
     * @var Client $client
30
     */
31
    protected $client;
32
33
    /**
34
     * Table constructor.
35
     *
36
     * @param string $tableName
37
     */
38 2
    public function __construct(string $tableName)
39
    {
40 2
        $this->tableName = $tableName;
41 2
    }
42
43
    /**
44
     * @param Client $client
45
     */
46 1
    public function setClient(Client $client): void
47
    {
48 1
        $this->client = $client;
49 1
    }
50
51
    /**
52
     * @return string|null
53
     */
54 2
    public function getName(): ?string
55
    {
56 2
        return $this->tableName;
57
    }
58
59
    /**
60
     *
61
     * Params could include the following:
62
     *      fields = ['column_1_name', 'column_2_name', 'column_3_name]
63
     *      filterByFormula = "NOT({Headline} = '')"
64
     *      maxRecords = 100
65
     *      pageSize = 100
66
     *      sort = [{field: "Headline", direction: "desc"}]
67
     *      view = "view_name"
68
     *
69
     * @param array $params
70
     * @return ResponseInterface
71
     */
72
    public function list(array $params)
73
    {
74
        return $this->client->send(
75
            TableRequest::listRecords($this->getName(), $params)
0 ignored issues
show
Bug introduced by
It seems like $this->getName() can also be of type null; however, parameter $tableName of Beachcasts\Airtable\Requ...eRequest::listRecords() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

75
            TableRequest::listRecords(/** @scrutinizer ignore-type */ $this->getName(), $params)
Loading history...
76
        );
77
    }
78
79
    /**
80
     * @param array $records
81
     * @return mixed
82
     */
83
    public function create(array $records)
84
    {
85
        return $this->client->send(
86
            TableRequest::createRecords($this->getName(), $records)
0 ignored issues
show
Bug introduced by
It seems like $this->getName() can also be of type null; however, parameter $tableName of Beachcasts\Airtable\Requ...equest::createRecords() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

86
            TableRequest::createRecords(/** @scrutinizer ignore-type */ $this->getName(), $records)
Loading history...
87
        );
88
    }
89
90
    /**
91
     * @param string $id
92
     * @return mixed
93
     */
94
    public function read(string $id)
95
    {
96
        return $this->client->send(
97
            TableRequest::readRecords($this->tableName, $id)
0 ignored issues
show
Bug introduced by
It seems like $this->tableName can also be of type null; however, parameter $tableName of Beachcasts\Airtable\Requ...eRequest::readRecords() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

97
            TableRequest::readRecords(/** @scrutinizer ignore-type */ $this->tableName, $id)
Loading history...
98
        );
99
    }
100
101
    /**
102
     * @param array $records
103
     * @param string $type accepts PUT to replace or PATCH to update records
104
     * @return mixed
105
     * @throws \Exception
106
     * @todo split out to a replace method for PUT
107
     *
108
     */
109
    public function update(array $records, $type = 'PATCH')
110
    {
111
        return $this->client->send(
112
            TableRequest::updateRecords($this->getName(), $records, $type)
0 ignored issues
show
Bug introduced by
It seems like $this->getName() can also be of type null; however, parameter $tableName of Beachcasts\Airtable\Requ...equest::updateRecords() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

112
            TableRequest::updateRecords(/** @scrutinizer ignore-type */ $this->getName(), $records, $type)
Loading history...
113
        );
114
    }
115
116
    /**
117
     * @param array $records
118
     * @return mixed
119
     */
120
    public function delete(array $records)
121
    {
122
        return $this->client->send(
123
            TableRequest::deleteRecords($this->getName(), $records)
0 ignored issues
show
Bug introduced by
It seems like $this->getName() can also be of type null; however, parameter $tableName of Beachcasts\Airtable\Requ...equest::deleteRecords() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

123
            TableRequest::deleteRecords(/** @scrutinizer ignore-type */ $this->getName(), $records)
Loading history...
124
        );
125
    }
126
}
127