Code Duplication    Length = 30-30 lines in 2 locations

src/BulkSql/BulkReplace.php 1 location

@@ 22-51 (lines=30) @@
19
20
    const QUERY_TEMPLATE = 'REPLACE INTO %s (%s) VALUES %s';
21
22
    protected function buildQuery(): string
23
    {
24
        $this->resetFields();
25
        $this->resetPreparedItems();
26
27
        $this->checkIsKeysOnTheBeginning();
28
29
        $queryParams = $this->iterateOverItems($this->getPreparedItems(), function ($iteration) {
30
            $prepared = array_map(function ($field, $key) use ($iteration) {
31
                if (in_array($field, $this->getIgnoredColumn(), true)) {
32
                    return $this->getPreparedItems()[$iteration][$field] ?? $this->getPreparedItems()[$iteration][$key];
33
                }
34
35
                return ':'.$field.'_'.$iteration;
36
            }, $this->getFields(), array_keys($this->getFields()));
37
38
            return '('.implode(',', $prepared).')';
39
        });
40
41
        $fields = array_map(function ($field) {
42
            return "`{$field}`";
43
        }, $this->getFields());
44
45
        return sprintf(
46
            self::QUERY_TEMPLATE,
47
            $this->getTable(),
48
            implode(',', $fields),
49
            implode(',', $queryParams)
50
        );
51
    }
52
53
    protected function bindValues(PDOStatement $statement)
54
    {

src/BulkSql/BulkInsert.php 1 location

@@ 17-46 (lines=30) @@
14
15
    const QUERY_TEMPLATE = 'INSERT %s INTO %s (%s) VALUES %s %s';
16
17
    protected function buildQuery() : string
18
    {
19
        $this->resetFields();
20
        $this->resetPreparedItems();
21
22
        $queryParams = $this->iterateOverItems($this->getPreparedItems(), function ($iteration) {
23
            $prepared = array_map(function ($field, $key) use ($iteration) {
24
                if (in_array($field, $this->getIgnoredColumn(), true)) {
25
                    return $this->getPreparedItems()[$iteration][$field] ?? $this->getPreparedItems()[$iteration][$key];
26
                }
27
28
                return ':'.$field.'_'.$iteration;
29
            }, $this->getFields(), array_keys($this->getFields()));
30
31
            return '('.implode(',', $prepared).')';
32
        });
33
34
        $fields = array_map(function ($field) {
35
            return "`{$field}`";
36
        }, $this->getFields());
37
38
        return sprintf(
39
            self::QUERY_TEMPLATE,
40
            ($this->isIgnoreUsed() ? 'IGNORE' : ''),
41
            $this->getTable(),
42
            implode(',', $fields),
43
            implode(',', $queryParams),
44
            $this->getOnDuplicateUpdateRow()
45
        );
46
    }
47
48
    protected function bindValues(PDOStatement $statement)
49
    {