enhancer-data-bridge
Version:
A bridge between Enhancer Clould and user business datasource
94 lines (87 loc) • 2.29 kB
JavaScript
exports.before = function(req, res, next) {
var dbconfig;
try {
dbconfig = JSON.parse(req.body.dbconfig);
} catch(e) {
return res.jsonp({
success: false,
message: 'Invalid dbconfig.'
});
}
req.dbConfig = dbconfig;
var dbtype = dbconfig.databaseType || 'mysql';
req.dbProxy = require('../database-proxy/' + dbtype);
next();
};
exports.testConnection = function(req, res, next) {
req.dbProxy.testConnection(req.dbConfig, function(err, result) {
if (err) {
return res.jsonp({
success: false,
message: err.message
});
}
res.jsonp({
success: result === true,
message: result
})
});
};
exports.testSQL = function(req, res, next) {
var params;
var sql;
try {
params = JSON.parse(req.body.params || '[]');
sql = req.body.sql;
} catch(e) {
return res.jsonp({
success: false,
message: 'Invalid parameters.'
});
}
if (!sql) {
return res.jsonp({
success: false,
message: 'No sql.'
});
}
sql = sql.replace(/\;\s*$/, '');
req.dbProxy.testSql(req.dbConfig, sql, params, function(err, result) {
if (err) {
return res.jsonp({
success: false,
message: err.message
})
}
res.jsonp(result);
});
};
exports.getTableNames = function(req, res, next) {
req.dbProxy.getTableNames(req.dbConfig, function(err, tableNames) {
if (err) {
return res.jsonp({
success: false,
message: err.message
});
}
res.jsonp({
success: true,
tableNames: tableNames
});
});
};
exports.getTableColumns = function(req, res, next) {
var tableName = req.body.tableName;
req.dbProxy.getTableColumns(req.dbConfig, tableName, function(err, columns) {
if (err) {
return res.jsonp({
success: false,
message: err.message
});
}
res.jsonp({
success: true,
columns: columns
});
});
};