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; } };