56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
|
|
var mysql = require('mysql');
|
|
var SqlConnector = require('loopback-connector').SqlConnector;
|
|
var MySQL = require('loopback-connector-mysql').MySQL;
|
|
var EnumFactory = require('loopback-connector-mysql').EnumFactory;
|
|
|
|
exports.initialize = function(dataSource, callback) {
|
|
dataSource.driver = mysql;
|
|
dataSource.connector = new VnMySQL(dataSource.settings);
|
|
dataSource.connector.dataSource = dataSource;
|
|
|
|
var modelBuilder = dataSource.modelBuilder;
|
|
var defineType = modelBuilder.defineValueType ?
|
|
modelBuilder.defineValueType.bind(modelBuilder) :
|
|
modelBuilder.constructor.registerType.bind(modelBuilder.constructor);
|
|
|
|
defineType(function Point() {});
|
|
|
|
dataSource.EnumFactory = EnumFactory;
|
|
|
|
if (callback) {
|
|
if (dataSource.settings.lazyConnect) {
|
|
process.nextTick(function() {
|
|
callback();
|
|
});
|
|
} else {
|
|
dataSource.connector.connect(callback);
|
|
}
|
|
}
|
|
};
|
|
|
|
exports.VnMySQL = VnMySQL;
|
|
|
|
function VnMySQL(settings) {
|
|
SqlConnector.call(this, 'mysql', settings);
|
|
}
|
|
|
|
VnMySQL.prototype = Object.create(MySQL.prototype);
|
|
VnMySQL.constructor = VnMySQL;
|
|
|
|
VnMySQL.prototype.toColumnValue = function(prop, val) {
|
|
if (val == null || !prop || prop.type !== Date)
|
|
return MySQL.prototype.toColumnValue.call(this, prop, val);
|
|
|
|
return val.getFullYear() + '-' +
|
|
fillZeros(val.getMonth() + 1) + '-' +
|
|
fillZeros(val.getDate()) + ' ' +
|
|
fillZeros(val.getHours()) + ':' +
|
|
fillZeros(val.getMinutes()) + ':' +
|
|
fillZeros(val.getSeconds());
|
|
|
|
function fillZeros(v) {
|
|
return v < 10 ? '0' + v : v;
|
|
}
|
|
};
|