コード例 #1
0
ファイル: model.js プロジェクト: CreativelyMe/geddy
 , _getAdapterConfig = function (dbConfig, adapterName) {
   var info;
   for (var p in dbConfig) {
     // Return the first alias key recognized whose
     // canonical name is the same
     info = model.getAdapterInfo(p);
     if (info && info.name == adapterName) {
       return dbConfig[p];
     }
   }
 };
コード例 #2
0
ファイル: model.js プロジェクト: CreativelyMe/geddy
  this.loadAdapterForModel = function (modelItem, cb) {
    var builtinAdaptersPath = path.join(__dirname,
            '../../node_modules/model/lib/adapters')
      , cwd = process.cwd()
      , modelDir = path.join('app/models')
      , appAdaptersPath = path.join(cwd, modelDir, 'adapters')
      , adapterInfo
      , adapterPath
      , adapterName
      , adapterCtor
      , adapter
      , config
      , name = modelItem.modelName
      , done;

    adapterName = modelItem.adapter;
    // Is there a specific adapter defined for this model item?
    if (adapterName) {
      // See if it's a custom in-app adapter
      adapterPath = _getAdapterPath(appAdaptersPath, adapterName);
      // Try again, see if there's a built-in adapter
      if (!adapterPath) {
        adapterInfo = model.getAdapterInfo(adapterName);
        if (adapterInfo) {
          adapterName = adapterInfo.name;
          adapterPath = _getAdapterPath(builtinAdaptersPath, adapterInfo.path);
        }
      }
    }
    else {
      // Look for a default adapter
      adapterName = model.defaultAdapter;
      if (adapterName) {
        adapterInfo = model.getAdapterInfo(adapterName);
        if (adapterInfo) {
          adapterName = adapterInfo.name; // Get canonical name
          adapterPath =
              _getAdapterPath(builtinAdaptersPath, adapterInfo.path);
        }
      }
    }

    // No adapter, log an error
    if (!adapterPath) {
      geddy.log.info('Model adapter not found for ' + name +
          '. Set .adapter for this model, or set model.defaultAdapter.');
    }
    else {
      adapter = model.adapters[adapterName];
      done = function (adapter) {
        model.loadedAdapters[name] = adapter; // Backward compat, remove after 0.9
        model[name].adapter = adapter; // e.g. model.FooBar.adapter
        model.adapters[adapterName] = adapter; // e.g., model.adpaters.postgres
        cb();
      };
      if (!adapter) {
        config = _getAdapterConfig(geddy.config.db, adapterName);
        adapterCtor = require(adapterPath).Adapter;
        adapter = new adapterCtor(config);
        if (typeof adapter.connect == 'function') {
          adapter.connect(function () {
            return done(adapter);
          });
        }
        else {
          return done(adapter);
        }
      }
      else {
        return done(adapter);
      }
    }
  };
コード例 #3
0
ファイル: model.js プロジェクト: Argetloum/SupFarm
    models.forEach(function (m) {
      var name = m.ctorName
        , filePath = m.filePath
        , adapterInfo
        , adapterPath
        , adapterName
        , adapterCtor
        , adapter
        , config;

      require(filePath);

      // If the model doesn't exist, something is f****d up
      if (!model[name]) {
        throw new Error('Model ' + name + ' did not get registered properly.');
      }

      adapterName = model[name].adapter;
      // Is there a specific adapter defined for this model item?
      if (adapterName) {
        // See if it's a custom in-app adapter
        adapterPath = _getAdapterPath(appAdaptersPath, adapterName);
        // Try again, see if there's a built-in adapter
        if (!adapterPath) {
          adapterInfo = model.getAdapterInfo(adapterName);
          if (adapterInfo) {
            adapterName = adapterInfo.name;
            adapterPath = _getAdapterPath(builtinAdaptersPath, adapterInfo.filePath);
          }
        }
      }
      else {
        // Look for a default adapter
        adapterName = model.defaultAdapter;
        if (adapterName) {
          adapterInfo = model.getAdapterInfo(adapterName);
          if (adapterInfo) {
            adapterName = adapterInfo.name;
            adapterPath =
                _getAdapterPath(builtinAdaptersPath, adapterInfo.filePath);
          }
        }
      }

      // No adapter, log an error
      if (!adapterPath) {
        geddy.log.info('Model adapter not found for ' + name +
            '. Set .adapter for this model, or set model.defaultAdapter.');
      }
      else {
        adapter = model.loadedAdapters[adapterName];
        if (!adapter) {
          config = _getAdapterConfig(geddy.config.db, adapterName);
          adapterCtor = require(adapterPath).Adapter;
          adapter = new adapterCtor(config);
          if (typeof adapter.connect == 'function') {
            adapter.connect();
          }
          model.loadedAdapters[name] = adapter;
        }
        model.adapters[name] = adapter;
      }

    });