From 9af6a9c7c4fe58b23f08a2d2e0b2fd165978616c Mon Sep 17 00:00:00 2001 From: brianc Date: Tue, 6 Sep 2011 17:27:47 -0500 Subject: [PATCH] work on insert --- lib/column.js | 5 +++++ lib/node/insert.js | 7 +++++++ lib/node/query.js | 9 +++++++++ lib/table.js | 6 ++++++ test/dialect-tests.js | 5 +++-- 5 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 lib/node/insert.js diff --git a/lib/column.js b/lib/column.js index 8ab9233..5e8acfd 100644 --- a/lib/column.js +++ b/lib/column.js @@ -39,6 +39,11 @@ var unaryMethod = function(name, operator) { } } +Column.prototype.value = function() { + this.value = value; + return this; +} + Column.prototype.toNode = function() { //creates a query node from this column return new ColumnNode(this); diff --git a/lib/node/insert.js b/lib/node/insert.js new file mode 100644 index 0000000..da27a03 --- /dev/null +++ b/lib/node/insert.js @@ -0,0 +1,7 @@ +var Node = require(__dirname); + +var Insert = Node.define({ + type: 'ORDER BY' +}); + +module.exports = Insert; diff --git a/lib/node/query.js b/lib/node/query.js index 08f2966..e02bbaf 100644 --- a/lib/node/query.js +++ b/lib/node/query.js @@ -3,6 +3,7 @@ var Select = require(__dirname + '/select'); var From = require(__dirname + '/from'); var Where = require(__dirname + '/where'); var OrderBy = require(__dirname + '/orderBy'); +var Insert = require(__dirname + '/insert'); var Query = Node.define({ type: 'QUERY', @@ -43,6 +44,14 @@ var Query = Node.define({ }); return this.add(orderBy); }, + insert: function() { + var args = Array.prototype.slice.call(arguments, 0); + var insert = new Insert(); + args.forEach(function(arg) { + insert.add(arg); + }); + return this.add(insert); + }, toQuery: function() { var Dialect = require(__dirname + '/../').dialect; return new Dialect().getQuery(this); diff --git a/lib/table.js b/lib/table.js index 35b1b0a..6e05367 100644 --- a/lib/table.js +++ b/lib/table.js @@ -49,6 +49,12 @@ Table.prototype.select = function() { return query; } +Table.prototype.insert = function() { + var insert = new Query(this); + query.insert.apply(query, arguments); + return query; +} + Table.prototype.toNode = function() { return new TableNode(this); } diff --git a/test/dialect-tests.js b/test/dialect-tests.js index 9d7be0c..afb9e50 100644 --- a/test/dialect-tests.js +++ b/test/dialect-tests.js @@ -135,8 +135,9 @@ test({ console.log('insert'); test({ - query : post.insert(post.content, post.userId).values('test', 1), - pg : 'INSERT INTO post(post.content, post."userId") VALUES($1, $2)' + query : post.insert(post.content.value('test'), post.userId.value(1)), + pg : 'INSERT INTO post(post.content, post."userId") VALUES($1, $2)', + params: ['test', 1] }); console.log('IGNORE: parent queries');