Skip to content

Commit f0564a6

Browse files
committed
Add support for limit, offset and order parameters in the select statements.
1 parent 915b29e commit f0564a6

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

sqlite.js

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ function SQLite(cfg) {
152152
}
153153

154154
function selectSQL(table, columns, conditions, options) {
155-
var query = 'SELECT #col# FROM ' + table + '#cond#;', matches = '';
155+
var query = 'SELECT #col# FROM ' + table + '#cond#', values = [];
156156

157157
if (typeof columns === 'undefined') {
158158
columns = '*';
@@ -162,10 +162,29 @@ function SQLite(cfg) {
162162

163163
conditions = buildConditions(conditions);
164164

165+
values = values.concat(conditions[1]);
166+
165167
query = query.replace("#col#", columns);
166168
query = query.replace('#cond#', conditions[0]);
167169

168-
return [query, conditions[1]];
170+
if (options) {
171+
if (options.limit) {
172+
query = query + ' LIMIT ?';
173+
values.push(options.limit);
174+
}
175+
if (options.order) {
176+
query = query + ' ORDER BY ?';
177+
values.push(options.order);
178+
}
179+
if (options.offset) {
180+
query = query + ' OFFSET ?';
181+
values.push(options.offset);
182+
}
183+
}
184+
185+
query = query + ';'
186+
187+
return [query, values];
169188
}
170189

171190
function destroySQL(table, conditions) {

tests.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@
2424
db.createTable('people', 'name TEXT, age INTEGER');
2525

2626
db.insert('people', { name: "Jeremy", age: 29 });
27+
db.insert('people', { name: "Tara", age: 28 });
2728

2829
db.update('people', { age: 30 }, { name: 'Jeremy' });
2930

30-
db.select('people', '*', { age: 30 }, function (results) { var x; for(x=0; x<results.rows.length; x++) { console.log(results.rows.item(x)); } });
31+
db.select('people', '*', { age: 30 }, null, function (r, q) { pass(r, q); var x; for(x=0; x<r.rows.length; x++) { console.log(r.rows.item(x)); } });
32+
db.select('people', 'name', null, { order: 'age DESC' }, function (r, q) { pass(r, q); var x; for(x=0; x<r.rows.length; x++) { console.log(r.rows.item(x)); } });
33+
db.select('people', 'name', null, { limit: 1 }, function (r, q) { pass(r, q); var x; for(x=0; x<r.rows.length; x++) { console.log(r.rows.item(x)); } });
3134

3235
db.destroy('people', { age: 30 });
3336
</script>

0 commit comments

Comments
 (0)