@@ 86-107 (lines=22) @@ | ||
83 | /** |
|
84 | * {@inheritdoc} |
|
85 | */ |
|
86 | public function compileInsert(Builder $query, array $values) |
|
87 | { |
|
88 | // keyspace-ref: |
|
89 | $table = $this->wrapTable($query->from); |
|
90 | // use-keys-clause: |
|
91 | $keyClause = $this->wrapKey($query->key); |
|
92 | // returning-clause |
|
93 | $returning = implode(', ', $query->returning); |
|
94 | ||
95 | if (!is_array(reset($values))) { |
|
96 | $values = [$values]; |
|
97 | } |
|
98 | $parameters = []; |
|
99 | ||
100 | foreach ($values as $record) { |
|
101 | $parameters[] = '(' . $this->parameterize($record) . ')'; |
|
102 | } |
|
103 | $parameters = (!$keyClause) ? implode(', ', $parameters) : "({$keyClause}, \$parameters)"; |
|
104 | $keyValue = (!$keyClause) ? null : '(KEY, VALUE)'; |
|
105 | ||
106 | return "insert into {$table} {$keyValue} values $parameters RETURNING {$returning}"; |
|
107 | } |
|
108 | ||
109 | /** |
|
110 | * {@inheritdoc} |
|
@@ 137-158 (lines=22) @@ | ||
134 | * |
|
135 | * @return string |
|
136 | */ |
|
137 | public function compileUpsert(QueryBuilder $query, array $values) |
|
138 | { |
|
139 | // keyspace-ref: |
|
140 | $table = $this->wrapTable($query->from); |
|
141 | // use-keys-clause: |
|
142 | $keyClause = $this->wrapKey($query->key); |
|
143 | // returning-clause |
|
144 | $returning = implode(', ', $query->returning); |
|
145 | ||
146 | if (!is_array(reset($values))) { |
|
147 | $values = [$values]; |
|
148 | } |
|
149 | $parameters = []; |
|
150 | ||
151 | foreach ($values as $record) { |
|
152 | $parameters[] = '(' . $this->parameterize($record) . ')'; |
|
153 | } |
|
154 | $parameters = (!$keyClause) ? implode(', ', $parameters) : "({$keyClause}, \$parameters)"; |
|
155 | $keyValue = (!$keyClause) ? null : '(KEY, VALUE)'; |
|
156 | ||
157 | return "UPSERT INTO {$table} {$keyValue} VALUES $parameters RETURNING {$returning}"; |
|
158 | } |
|
159 | } |
|
160 |