| @@ 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 | ||