From 7711228c66caa94f31e4cac81dca940e88db1206 Mon Sep 17 00:00:00 2001 From: brianc Date: Thu, 21 Mar 2013 11:24:58 -0500 Subject: [PATCH] allow any arbitrary properties to be set on columns --- lib/column.js | 5 +++-- test/table-tests.js | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/lib/column.js b/lib/column.js index 586ddf4..5bfa8da 100644 --- a/lib/column.js +++ b/lib/column.js @@ -8,8 +8,9 @@ var UnaryNode = require(__dirname + '/node/unary'); var TextNode = require(__dirname + '/node/text'); var Column = function(config) { this.table = config.table; - this.name = config.name; - this.star = config.star; + for(var name in config) { + this[name] = config[name]; + } this.asc = this.ascending = this; this.alias = null; this.desc = this.descending = new OrderByColumnNode({ diff --git a/test/table-tests.js b/test/table-tests.js index 728773d..7b0770a 100644 --- a/test/table-tests.js +++ b/test/table-tests.js @@ -43,3 +43,35 @@ test('table', function(t) { t.equal(user.name.table, user); t.end(); }); + +test('table with fancier column definitions', function(t) { + var table = Table.define({ + name: 'blah', + columns: [{ + name: 'id', + type: 'serial', + notNull: true, + primaryKey: true + }, { + name: 'email', + type: 'text', + notNull: true, + unique: true, + anythingYouWant: 'awesome' + }] + }); + var cols = table.columns; + t.equals(cols.length, 2); + var id = cols[0]; + t.equals(id.name, 'id'); + t.equals(id.type, 'serial'); + t.equals(id.notNull, true); + t.equals(id.primaryKey, true); + var email = cols[1]; + t.equals(email.name, 'email'); + t.equals(email.type, 'text'); + t.equals(email.notNull, true); + t.equals(email.unique, true); + t.equals(email.anythingYouWant, 'awesome'); + t.end(); +});