Fix quoting identifiers with comma-seperated values
This commit is contained in:
parent
1f03c8c0dd
commit
41ef3ebeec
@ -186,7 +186,11 @@ var d = {
|
||||
}
|
||||
|
||||
// Handle commas
|
||||
str = helpers.splitTrim(',', str);
|
||||
if (str.contains(','))
|
||||
{
|
||||
var parts = str.split(',').map(helpers.stringTrim);
|
||||
str = parts.map(d.quoteIdentifiers).join(',');
|
||||
}
|
||||
|
||||
// Split identifiers by period
|
||||
hiers = str.split('.').map(d._quote);
|
||||
|
@ -86,17 +86,6 @@ var h = {
|
||||
stringTrim: function(str) {
|
||||
return str.trim();
|
||||
},
|
||||
/**
|
||||
* Split a string by a character, trim the string
|
||||
* and rejoin the string
|
||||
*
|
||||
* @param {String} char
|
||||
* @param {String} string
|
||||
* @return {String}
|
||||
*/
|
||||
splitTrim: function(char, string) {
|
||||
return string.split(char).map(h.stringTrim).join(char);
|
||||
},
|
||||
/**
|
||||
* Get the type of the variable passed
|
||||
*
|
||||
|
@ -186,7 +186,7 @@ function name, eg isNumber</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="helpers.js.html">helpers.js</a>,
|
||||
<a href="helpers.js.html#sunlight-1-line-67">line 67</a>
|
||||
<a href="helpers.js.html#sunlight-1-line-56">line 56</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -307,7 +307,7 @@ function name, eg isNumber</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="helpers.js.html">helpers.js</a>,
|
||||
<a href="helpers.js.html#sunlight-1-line-58">line 58</a>
|
||||
<a href="helpers.js.html#sunlight-1-line-47">line 47</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -351,174 +351,6 @@ function name, eg isNumber</p>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="splitTrim"><span class="type-signature"><static> </span>splitTrim<span class="signature">(char, string)</span><span class="type-signature"> → {String}</span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
<p>Split a string by a character, trim the string
|
||||
and rejoin the string</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h5>Parameters:</h5>
|
||||
|
||||
|
||||
<table class="params table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
<th>Name</th>
|
||||
|
||||
|
||||
<th>Type</th>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<th class="last">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>char</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">String</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last"></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>string</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">String</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last"></td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source">
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="helpers.js.html">helpers.js</a>,
|
||||
<a href="helpers.js.html#sunlight-1-line-26">line 26</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h5>Returns:</h5>
|
||||
|
||||
|
||||
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
Type
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<span class="param-type">String</span>
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
@ -769,7 +601,7 @@ and rejoin the string</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="helpers.js.html">helpers.js</a>,
|
||||
<a href="helpers.js.html#sunlight-1-line-37">line 37</a>
|
||||
<a href="helpers.js.html#sunlight-1-line-26">line 26</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
@ -184,7 +184,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-13">line 13</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-12">line 12</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -305,7 +305,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-388">line 388</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-387">line 387</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1427,7 +1427,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-335">line 335</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-334">line 334</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1574,7 +1574,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-602">line 602</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-601">line 601</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1933,7 +1933,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-461">line 461</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-460">line 460</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2408,7 +2408,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-588">line 588</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-587">line 587</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2634,7 +2634,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-410">line 410</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-409">line 409</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3039,7 +3039,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-423">line 423</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-422">line 422</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3154,7 +3154,7 @@
|
||||
</td>
|
||||
|
||||
|
||||
<td class="description last"><p>The field to order by</p></td>
|
||||
<td class="description last"><p>The field(s) to order by</p></td>
|
||||
</tr>
|
||||
|
||||
|
||||
@ -3230,7 +3230,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-625">line 625</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-624">line 624</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3503,7 +3503,7 @@ prefixed with 'OR'</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-475">line 475</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-474">line 474</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3729,7 +3729,7 @@ prefixed with 'OR'</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-436">line 436</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-435">line 435</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4043,7 +4043,7 @@ prefixed with 'OR NOT'</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-449">line 449</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-448">line 448</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4228,7 +4228,7 @@ prefixed with 'OR NOT'</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-501">line 501</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-500">line 500</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4387,7 +4387,7 @@ prefixed with 'OR NOT'</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-525">line 525</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-524">line 524</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4546,7 +4546,7 @@ prefixed with 'OR NOT'</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-549">line 549</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-548">line 548</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4685,7 +4685,7 @@ prefixed with 'OR NOT'</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-354">line 354</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-353">line 353</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4867,7 +4867,7 @@ prefixed with 'OR NOT'</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-561">line 561</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-560">line 560</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -5262,7 +5262,7 @@ prefixed with 'OR NOT'</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-489">line 489</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-488">line 488</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -5421,7 +5421,7 @@ prefixed with 'OR NOT'</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-513">line 513</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-512">line 512</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -5580,7 +5580,7 @@ prefixed with 'OR NOT'</p>
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="query-builder.js.html">query-builder.js</a>,
|
||||
<a href="query-builder.js.html#sunlight-1-line-537">line 537</a>
|
||||
<a href="query-builder.js.html#sunlight-1-line-536">line 536</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
@ -72,7 +72,6 @@
|
||||
class="sunlight-highlight-javascript linenums">'use strict';
|
||||
|
||||
/** @module query-builder */
|
||||
require('./es6-polyfill');
|
||||
var getArgs = require('getargs'),
|
||||
helpers = require('./helpers');
|
||||
|
||||
@ -689,7 +688,7 @@ var QueryBuilder = function(driver, adapter) {
|
||||
/**
|
||||
* Order the results by the selected field(s)
|
||||
*
|
||||
* @param {String} field - The field to order by
|
||||
* @param {String} field - The field(s) to order by
|
||||
* @param {String} [type='ASC'] - The order direction, ASC or DESC
|
||||
* @return this
|
||||
*/
|
||||
@ -698,6 +697,7 @@ var QueryBuilder = function(driver, adapter) {
|
||||
|
||||
// Set the fields for later manipulation
|
||||
field = driver.quoteIdentifiers(field);
|
||||
|
||||
state.orderArray[field] = type;
|
||||
|
||||
var orderClauses = [];
|
||||
|
@ -115,7 +115,11 @@ var d = {
|
||||
}
|
||||
|
||||
// Handle commas
|
||||
str = helpers.splitTrim(',', str);
|
||||
if (str.contains(','))
|
||||
{
|
||||
var parts = str.split(',').map(helpers.stringTrim);
|
||||
str = parts.map(d.quoteIdentifiers).join(',');
|
||||
}
|
||||
|
||||
// Split identifiers by period
|
||||
hiers = str.split('.').map(d._quote);
|
||||
|
@ -15,17 +15,6 @@ var h = {
|
||||
stringTrim: function(str) {
|
||||
return str.trim();
|
||||
},
|
||||
/**
|
||||
* Split a string by a character, trim the string
|
||||
* and rejoin the string
|
||||
*
|
||||
* @param {String} char
|
||||
* @param {String} string
|
||||
* @return {String}
|
||||
*/
|
||||
splitTrim: function(char, string) {
|
||||
return string.split(char).map(h.stringTrim).join(char);
|
||||
},
|
||||
/**
|
||||
* Get the type of the variable passed
|
||||
*
|
||||
|
@ -617,7 +617,7 @@ var QueryBuilder = function(driver, adapter) {
|
||||
/**
|
||||
* Order the results by the selected field(s)
|
||||
*
|
||||
* @param {String} field - The field to order by
|
||||
* @param {String} field - The field(s) to order by
|
||||
* @param {String} [type='ASC'] - The order direction, ASC or DESC
|
||||
* @return this
|
||||
*/
|
||||
@ -626,6 +626,7 @@ var QueryBuilder = function(driver, adapter) {
|
||||
|
||||
// Set the fields for later manipulation
|
||||
field = driver.quoteIdentifiers(field);
|
||||
|
||||
state.orderArray[field] = type;
|
||||
|
||||
var orderClauses = [];
|
||||
|
@ -68,10 +68,22 @@ module.exports = (function() {
|
||||
},
|
||||
'Select tests' : {
|
||||
'Select where get': function(test) {
|
||||
base.qb.select(['id', 'key as k', 'val'])
|
||||
.where('id >', 1)
|
||||
.where('id <', 900)
|
||||
.get('create_test', 2, 1, base.testCallback.bind(test, test));
|
||||
|
||||
base.qb.select('id, key as k, val')
|
||||
.where('id !=', 1)
|
||||
.get('create_test', 2, 1, base.testCallback.bind(test, test));
|
||||
|
||||
test.done();
|
||||
},
|
||||
'Multi Order By': function(test) {
|
||||
base.qb.from('create_test')
|
||||
.orderBy('id, key')
|
||||
.get(base.testCallback.bind(test, test));
|
||||
|
||||
test.done();
|
||||
}
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user