Passed
Push — 1.x ( 4e8027...9b649f )
by Adrian
04:54
created

Create::getIndex()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
cc 1
eloc 1
c 2
b 0
f 1
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
namespace Manticoresearch\Endpoints\Indices;
4
5
use Manticoresearch\Endpoints\EmulateBySql;
6
use Manticoresearch\Exceptions\RuntimeException;
7
use Manticoresearch\Utils;
8
9
/**
10
 * Class Create
11
 * @package Manticoresearch\Endpoints\Indices
12
 */
13
class Create extends EmulateBySql
14
{
15
    use Utils;
16
    /**
17
     * @var string
18
     */
19
    protected $index;
20
21
    public function setBody($params = null)
22
    {
23
        if (isset($this->index)) {
24
            $columns = [];
25
            if (isset($params['columns'])) {
26
                foreach ($params['columns'] as $name => $settings) {
27
                    $column = $name . ' ' . $settings['type'];
28
                    if (isset($settings['options']) && count($settings['options']) > 0) {
29
                        $column .= ' ' . implode(' ', $settings['options']);
30
                    }
31
                    $columns[] = $column;
32
                }
33
            }
34
            $options = "";
35
            if (isset($params['settings'])) {
36
                foreach ($params['settings'] as $name => $value) {
37
                    $options.=" ".$name." = '".$value."'";
38
                    if (is_array($value)) {
39
                        foreach ($value as $v) {
40
                            $options.=" ".$name." = '".$v."'";
41
                        }
42
                    } else {
43
                        $options.=" ".$name." = '".$value."'";
44
                    }
45
                }
46
            }
47
            return parent::setBody(['query' => "CREATE TABLE ".
48
                (isset($params['silent']) && $params['silent']===true?' IF NOT EXISTS ':'').
49
                $this->index.
50
                (count($columns)>0?"(".implode(",", $columns).")":" ")
51
                .$options]);
52
        }
53
        throw new RuntimeException('Index name is missing.');
54
    }
55
    /**
56
     * @return mixed
57
     */
58
    public function getIndex()
59
    {
60
        return $this->index;
61
    }
62
63
    /**
64
     * @param mixed $index
65
     */
66
    public function setIndex($index)
67
    {
68
        $this->index = $index;
69
    }
70
}
71