Add Travis testing for Node v4.x

- Update node-mariasql to 0.2.x
 - Closes #970
 - Closes #977
 - Closes #995
This commit is contained in:
blah238 2015-10-27 17:17:09 -05:00
parent 3f0a8737ce
commit 1ee32292d4
4 changed files with 81 additions and 60 deletions

View File

@ -6,6 +6,7 @@ language: node_js
node_js:
- '0.10'
- '0.12'
- '4'
before_script:
- psql -c 'create database knex_test;' -U postgres
@ -17,5 +18,14 @@ after_script:
notifications:
email: false
env:
- CXX=g++-4.8
addons:
postgresql: '9.4'
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.8
- gcc-4.8

View File

@ -35,7 +35,7 @@ assign(Client_MariaSQL.prototype, {
var connection = new this.driver();
connection.connect(assign({ metadata: true }, this.connectionSettings));
return new Promise(function (resolver, rejecter) {
connection.on('connect', function () {
connection.on('ready', function () {
connection.removeAllListeners('end');
connection.removeAllListeners('error');
resolver(connection);
@ -59,15 +59,13 @@ assign(Client_MariaSQL.prototype, {
// and pass that through to the stream we've sent back to the client.
_stream: function _stream(connection, sql, stream) {
return new Promise(function (resolver, rejecter) {
connection.query(sql.sql, sql.bindings).on('result', function (result) {
result.on('row', rowHandler(function (row) {
stream.write(row);
})).on('end', function (data) {
resolver(data);
connection.query(sql.sql, sql.bindings).on('result', function (res) {
res.on('error', rejecter).on('end', function () {
resolver(res.info);
}).on('data', function (data) {
stream.write(handleRow(data, res.info.metadata));
});
}).on('error', function (err) {
rejecter(err);
});
}).on('error', rejecter);
});
},
@ -77,16 +75,15 @@ assign(Client_MariaSQL.prototype, {
var tz = this.connectionSettings.timezone || 'local';
return new Promise(function (resolver, rejecter) {
if (!obj.sql) return resolver();
var rows = [];
var query = connection.query(SqlString.format(obj.sql, obj.bindings, tz), []);
query.on('result', function (result) {
result.on('row', rowHandler(function (row) {
rows.push(row);
})).on('end', function (data) {
obj.response = [rows, data];
resolver(obj);
});
}).on('error', rejecter);
var sql = SqlString.format(obj.sql, obj.bindings, tz);
connection.query(sql, function (err, rows) {
if (err) {
return rejecter(err);
}
handleRows(rows, rows.info.metadata);
obj.response = [rows, rows.info];
resolver(obj);
});
});
},
@ -109,7 +106,7 @@ assign(Client_MariaSQL.prototype, {
case 'del':
case 'update':
case 'counter':
return data.affectedRows;
return parseInt(data.affectedRows, 10);
default:
return response;
}
@ -129,17 +126,22 @@ function parseType(value, type) {
}
}
function rowHandler(callback) {
var types;
return function (row, meta) {
if (!types) types = meta.types;
var keys = Object.keys(types);
for (var i = 0, l = keys.length; i < l; i++) {
var type = keys[i];
row[type] = parseType(row[type], types[type]);
}
callback(row);
};
function handleRow(row, metadata) {
var keys = Object.keys(metadata);
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var type = metadata[key].type;
row[key] = parseType(row[key], type);
}
return row;
}
function handleRows(rows, metadata) {
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
handleRow(row, metadata);
}
return rows;
}
module.exports = Client_MariaSQL;

View File

@ -28,7 +28,7 @@
"coveralls": "~2.11.1",
"istanbul": "~0.3.0",
"jshint": "^2.7.0",
"mariasql": "^0.1.21",
"mariasql": "^0.2.3",
"mocha": "^2.2.4",
"mysql": "^2.6.2",
"mysql2": "^0.15.5",

View File

@ -34,7 +34,7 @@ assign(Client_MariaSQL.prototype, {
connection.connect(assign({metadata: true}, this.connectionSettings));
return new Promise(function(resolver, rejecter) {
connection
.on('connect', function() {
.on('ready', function() {
connection.removeAllListeners('end');
connection.removeAllListeners('error');
resolver(connection);
@ -60,12 +60,17 @@ assign(Client_MariaSQL.prototype, {
_stream: function(connection, sql, stream) {
return new Promise(function(resolver, rejecter) {
connection.query(sql.sql, sql.bindings)
.on('result', function(result) {
result
.on('row', rowHandler(function(row) { stream.write(row); }))
.on('end', function(data) { resolver(data); });
.on('result', function(res) {
res
.on('error', rejecter)
.on('end', function() {
resolver(res.info);
})
.on('data', function (data) {
stream.write(handleRow(data, res.info.metadata));
})
})
.on('error', function(err) { rejecter(err); });
.on('error', rejecter);
});
},
@ -75,16 +80,15 @@ assign(Client_MariaSQL.prototype, {
var tz = this.connectionSettings.timezone || 'local';
return new Promise(function(resolver, rejecter) {
if (!obj.sql) return resolver()
var rows = [];
var query = connection.query(SqlString.format(obj.sql, obj.bindings, tz), [])
query.on('result', function(result) {
result.on('row', rowHandler(function(row) { rows.push(row); }))
.on('end', function(data) {
obj.response = [rows, data];
resolver(obj);
});
var sql = SqlString.format(obj.sql, obj.bindings, tz);
connection.query(sql, function (err, rows) {
if (err) {
return rejecter(err);
}
handleRows(rows, rows.info.metadata);
obj.response = [rows, rows.info];
resolver(obj);
})
.on('error', rejecter)
});
},
@ -107,11 +111,11 @@ assign(Client_MariaSQL.prototype, {
case 'del':
case 'update':
case 'counter':
return data.affectedRows;
return parseInt(data.affectedRows, 10);
default:
return response;
}
}
}
})
@ -127,17 +131,22 @@ function parseType(value, type) {
}
}
function rowHandler(callback) {
var types;
return function(row, meta) {
if (!types) types = meta.types;
var keys = Object.keys(types);
for (var i = 0, l = keys.length; i < l; i++) {
var type = keys[i];
row[type] = parseType(row[type], types[type]);
}
callback(row);
};
function handleRow(row, metadata) {
var keys = Object.keys(metadata);
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var type = metadata[key].type;
row[key] = parseType(row[key], type);
}
return row;
}
function handleRows(rows, metadata) {
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
handleRow(row, metadata);
}
return rows;
}
module.exports = Client_MariaSQL