不要怂,就是干,撸起袖子干!

connector-manager.js 1.42 KB
'use strict';

var sqlite3
  , Utils = require('../../utils')
  , Query = require('./query');

module.exports = (function() {
  var ConnectorManager = function(sequelize, config) {
    this.sequelize = sequelize;
    this.config = config;

    if (config.dialectModulePath) {
      sqlite3 = require(config.dialectModulePath).verbose();
    } else {
      sqlite3 = require('sqlite3').verbose();
    }
  };

  Utils._.extend(ConnectorManager.prototype, require('../abstract/connector-manager').prototype);

  ConnectorManager.prototype.connect = function() {
    var emitter = new (require('events').EventEmitter)()
      , self = this
      , db;

    this.database = db = new sqlite3.Database(self.sequelize.options.storage || ':memory:', function(err) {
      if (err) {
        if (err.code === 'SQLITE_CANTOPEN') {
          emitter.emit('error', 'Failed to find SQL server. Please double check your settings.');
        }
      }

      if (!err && self.sequelize.options.foreignKeys !== false) {
        // Make it possible to define and use foreign key constraints unless
        // explicitly disallowed. It's still opt-in per relation
        db.run('PRAGMA FOREIGN_KEYS=ON');
      }
    });
  };

  ConnectorManager.prototype.query = function(sql, callee, options) {
    if (!this.database) {
      this.connect();
    }

    return new Query(this.database, this.sequelize, callee, options).run(sql);
  };

  return ConnectorManager;
})();