Comparing version 0.5.0 to 0.5.1
@@ -54,6 +54,6 @@ 'use strict'; | ||
function createJoinSQL (ij) { | ||
function createJoinSQL (type, ij) { | ||
return [ | ||
quote(ij.table1), | ||
'JOIN', | ||
type, | ||
quote(ij.table2), | ||
@@ -69,6 +69,7 @@ 'ON', | ||
exports.select = function select (_, options) { | ||
var result; | ||
var result, table; | ||
var columns = options.select || ['*']; | ||
var values = []; | ||
var innerJoin = options.innerJoin; | ||
var leftOuterJoin = options.leftOuterJoin; | ||
var where = options.where; | ||
@@ -81,7 +82,11 @@ var query = ['SELECT'] | ||
if (innerJoin) { | ||
query = query.concat(createJoinSQL(innerJoin)); | ||
table = createJoinSQL('JOIN', innerJoin); | ||
} else if (leftOuterJoin) { | ||
table = createJoinSQL('LEFT OUTER JOIN', leftOuterJoin); | ||
} else { | ||
query = query.concat(quote(options.tableName)); | ||
table = quote(options.tableName); | ||
} | ||
query = query.concat(table); | ||
if (where) { | ||
@@ -88,0 +93,0 @@ result = processWhere(where, query, values); |
{ | ||
"name": "abase-db", | ||
"version": "0.5.0", | ||
"version": "0.5.1", | ||
"description": "A little experiment in defining models in Joi and creating PostgreSQL Tables", | ||
@@ -5,0 +5,0 @@ "main": "lib/", |
@@ -143,3 +143,3 @@ # joi-postgresql | ||
| `where` | `select`, `update`, `delete` | object with field names and values that must match by equality (would like inequalities in future) | | ||
| `innerJoin` | `select` | Allows you to perform an inner join on two tables based on two fields. pass an object of the form `{ table1, table2, column1, column2 }` | | ||
| `innerJoin` or `leftOuterJoin` | `select` | Allows you to perform an joins of given type on two tables based on two fields. pass an object of the form `{ table1, table2, column1, column2 }` | | ||
@@ -146,0 +146,0 @@ The `query` handler takes options object of the form `{raw: 'SELECT * FROM your_raw_psql' }`. |
@@ -62,3 +62,3 @@ 'use strict'; | ||
tape('::select - gen. SQL to select from join', function (t) { | ||
tape('::select - gen. SQL to select from inner join', function (t) { | ||
var query = sqlGen.select(null, { | ||
@@ -81,2 +81,21 @@ innerJoin: { | ||
tape('::select - gen. SQL to select from left outer join', function (t) { | ||
var query = sqlGen.select(null, { | ||
leftOuterJoin: { | ||
table1: 'team', | ||
table2: 'player', | ||
column1: 'id', | ||
column2: 'team_id' | ||
} | ||
}); | ||
t.equal( | ||
query[0], | ||
'SELECT * FROM "team" LEFT OUTER JOIN' | ||
+ ' "player" ON "team"."id" = "player"."team_id"', | ||
'Generate psql for JOIN' | ||
); | ||
t.end(); | ||
}); | ||
tape('::insert - generate SQL to insert row into table w id', function (t) { | ||
@@ -83,0 +102,0 @@ var query = sqlGen.insert( |
84522
1366