From b7428436b1e7e85932ef6c98bc1114e81b22afc1 Mon Sep 17 00:00:00 2001 From: devin ivy Date: Sat, 9 May 2015 10:15:17 -0400 Subject: [PATCH 1/2] Allow for fixed-size binary primary key --- lib/sql.js | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/lib/sql.js b/lib/sql.js index 547c0680..0cea5258 100644 --- a/lib/sql.js +++ b/lib/sql.js @@ -82,10 +82,24 @@ var sql = module.exports = { if(attribute.primaryKey) { // If type is an integer, set auto increment - if(type === 'INT') { + if (type === 'INT') { + return attrName + ' INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY'; } - + + // If type is BLOB, reset to a fixed size BINARY column + if (type === 'BLOB') { + + // Default 16 byte length + var size = 16; + if (validColumnSize(attr.size)) { + + size = attr.size; + } + + return attrName + 'BINARY('+ size +') NOT NULL PRIMARY KEY'; + } + // Just set NOT NULL on other types return attrName + ' VARCHAR(255) NOT NULL PRIMARY KEY'; } @@ -358,9 +372,11 @@ function sqlTypeCast(attr) { var size = 255; // By default. // If attr.size is positive integer, use it as size of varchar. - if(!isNaN(attr.size) && (parseInt(attr.size) == parseFloat(attr.size)) && (parseInt(attr.size) > 0)) + if(validColumnSize(attr.size)) { + size = attr.size; - + } + return 'VARCHAR(' + size + ')'; } @@ -428,3 +444,9 @@ function validSubAttrCriteria(c) { !_.isUndefined(c['<=']) || !_.isUndefined(c['!']) || !_.isUndefined(c['>']) || !_.isUndefined(c['>=']) || !_.isUndefined(c.startsWith) || !_.isUndefined(c.endsWith) || !_.isUndefined(c.contains) || !_.isUndefined(c.like)); } + +function validColumnSize(size) { + + // Is definitely an integer number greater than zero + return !isNaN(size) && (parseInt(size) == parseFloat(size)) && (parseInt(size) > 0); +} From a6542c3cf4a6bc2aacaae8e5c09d9c5a4b3e02d6 Mon Sep 17 00:00:00 2001 From: devin ivy Date: Sat, 9 May 2015 10:48:06 -0400 Subject: [PATCH 2/2] Add missing space in column definition. --- lib/sql.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/sql.js b/lib/sql.js index 0cea5258..c73b25fd 100644 --- a/lib/sql.js +++ b/lib/sql.js @@ -97,7 +97,7 @@ var sql = module.exports = { size = attr.size; } - return attrName + 'BINARY('+ size +') NOT NULL PRIMARY KEY'; + return attrName + ' BINARY('+ size +') NOT NULL PRIMARY KEY'; } // Just set NOT NULL on other types