From 2c43a97f7e40cf0cbce70d2a4e027503f6d6a198 Mon Sep 17 00:00:00 2001
From: Anatoliy Chakkaev <anatoliy.chakkaev@flatsoft.com>
Date: Sat, 10 Mar 2012 16:07:59 +0400
Subject: [PATCH] Removed sequelize adapter

---
 .travis.yml               |   1 -
 lib/adapters/sequelize.js | 220 --------------------------------------
 package.json              |   2 +-
 3 files changed, 1 insertion(+), 222 deletions(-)
 delete mode 100644 lib/adapters/sequelize.js

diff --git a/.travis.yml b/.travis.yml
index 2cd8be7f..7eb1eb01 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,4 +7,3 @@ before_script:
   - "mysql -e 'create database myapp_test;'"
   - "psql -c 'create database myapp_test;' -U postgres"
   - mongo mydb_test --eval 'db.addUser("travis", "test");'
-  - which neo4j && neo4j start && sleep 5
diff --git a/lib/adapters/sequelize.js b/lib/adapters/sequelize.js
deleted file mode 100644
index 41d8aef6..00000000
--- a/lib/adapters/sequelize.js
+++ /dev/null
@@ -1,220 +0,0 @@
-var safeRequire = require('../utils').safeRequire;
-
-var Sequelize = safeRequire('sequelize');
-
-exports.initialize = function initializeSchema(schema, callback) {
-    if (!Sequelize) return;
-
-    schema.adapter = new SequelizeAdapter(schema);
-    process.nextTick(callback);
-};
-
-function SequelizeAdapter(schema) {
-    this.schema = schema;
-    this._models = {};
-    this._modelDefinitions = {};
-    this._modelSettings = {};
-    this.client = new Sequelize(
-        schema.settings.database,
-        schema.settings.username,
-        schema.settings.password, {
-            host: schema.settings.host,
-            port: schema.settings.port,
-            logging: schema.settings.port,
-            maxConcurrentQueries: schema.settings.maxConcurrentQueries
-        }
-    );
-}
-
-SequelizeAdapter.prototype.define = function (d) {
-    var model = d.model;
-    var settings = d.settings;
-    var properties = d.properties;
-    var m = model.modelName;
-    var translate = {
-        'String':  Sequelize.STRING,
-        'Text':    Sequelize.TEXT,
-        'Number':  Sequelize.INTEGER,
-        'Boolean': Sequelize.BOOLEAN,
-        'Date':    Sequelize.DATE
-    };
-
-    var props = {};
-
-    Object.keys(properties).forEach(function (property) {
-        props[property] = translate[properties[property].type.name];
-    });
-
-    this._modelDefinitions[m] = props;
-    this._modelSettings[m] = settings;
-};
-
-SequelizeAdapter.prototype.defineSequelizeModel = function (m) {
-    this._models[m] = this.client.define(m, this._modelDefinitions[m], this._modelSettings[m]);
-};
-
-SequelizeAdapter.prototype.defineForeignKey = function (model, key, cb) {
-    this._modelDefinitions[model][key] = {type: Sequelize.INTEGER, index: true};
-    cb(null, Number);
-};
-
-
-SequelizeAdapter.prototype.model = function getModel(name) {
-    return this._models[name];
-};
-
-SequelizeAdapter.prototype.cleanup = function (model, obj) {
-    if (!obj) {
-        return null;
-    }
-    var def = this._modelDefinitions[model];
-    var data = {};
-    Object.keys(def).concat(['id']).forEach(function (key) {
-        data[key] = obj[key];
-    });
-    return data;
-};
-
-SequelizeAdapter.prototype.save = function (model, data, callback) {
-    this.model(model).find(data.id)
-    .on('success', function (record) {
-        record.updateAttributes(data)
-        .on('success', callback.bind(data, null))
-        .on('failure', callback);
-    })
-    .on('failure', callback);
-    
-};
-
-SequelizeAdapter.prototype.updateAttributes = function (model, id, data, callback) {
-    data.id = id;
-    this.save(model, data, callback);
-};
-
-SequelizeAdapter.prototype.create = function (model, data, callback) {
-    this.model(model)
-    .build(data)
-    .save()
-    .on('success', function (obj) {
-        callback(null, obj.id);
-    })
-    .on('failure', callback);
-};
-
-SequelizeAdapter.prototype.freezeSchema = function () {
-    Object.keys(this._modelDefinitions).forEach(function (m) {
-        this.defineSequelizeModel(m);
-    }.bind(this));
-};
-
-SequelizeAdapter.prototype.automigrate = function (cb) {
-    this.client.sync({force: true})
-    .on('success', cb.bind(this, null))
-    .on('failure', cb);
-};
-
-SequelizeAdapter.prototype.exists = function (model, id, callback) {
-    this.model(model)
-    .find(id)
-    .on('success', function (data) {
-        if (callback) {
-            callback.calledOnce = true;
-            callback(null, data);
-        }
-    })
-    .on('failure', co(callback));
-};
-
-function co(cb, args) {
-
-    return function () {
-        if (!cb.calledOnce) {
-            cb.calledOnce = true;
-            cb.call.apply(cb, args || []);
-        }
-    }
-}
-
-SequelizeAdapter.prototype.find = function find(model, id, callback) {
-    this.model(model)
-    .find(id)
-    .on('success', function (data) {
-        callback(null, this.cleanup(model, data));
-    }.bind(this))
-    .on('failure', callback);
-};
-
-SequelizeAdapter.prototype.destroy = function destroy(model, id, callback) {
-    this.model(model)
-    .find(id)
-    .on('success', function (data) {
-        data.destroy()
-        .on('success', callback.bind(null, null))
-        .on('failure', callback);
-    }.bind(this))
-    .on('failure', callback);
-};
-
-SequelizeAdapter.prototype.all = function all(model, filter, callback) {
-    this.model(model).all.on('success', function (data) {
-        // TODO: filter
-        callback(null, filter ? data.filter(applyFilter(filter)) : data);
-    }).on('failure', callback);
-};
-
-function applyFilter(filter) {
-    if (typeof filter.where === 'function') {
-        return filter.where;
-    }
-    var keys = Object.keys(filter.where || {});
-    return function (obj) {
-        var pass = true;
-        keys.forEach(function (key) {
-            if (!test(filter.where[key], obj[key])) {
-                pass = false;
-            }
-        });
-        return pass;
-    }
-
-    function test(example, value) {
-        if (typeof value === 'string' && example && example.constructor.name === 'RegExp') {
-            return value.match(example);
-        }
-        // not strict equality
-        return example == value;
-    }
-}
-
-SequelizeAdapter.prototype.destroyAll = function destroyAll(model, callback) {
-    var wait;
-    this.model(model)
-    .all
-    .on('success', function (data) {
-        wait = data.length;
-        data.forEach(function (obj) {
-            obj.destroy()
-            .on('success', done)
-            .on('false', error)
-        });
-    }.bind(this))
-    .on('failure', callback);
-
-    var err = null;
-    function done() {
-        if (--wait === 0) callback(err);
-    }
-    function error(e) {
-        err = e;
-        if (--wait === 0) callback(err);
-    }
-};
-
-SequelizeAdapter.prototype.count = function count(model, callback) {
-    this.model(model).count()
-    .on('success', function (c) {
-        if (callback) callback(null, c);
-    })
-    .on('failure', callback);
-};
-
diff --git a/package.json b/package.json
index 14f6fb9a..e1c71340 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
   },
   "main": "index.js",
   "scripts": {
-    "test": "EXCEPT=sequelize nodeunit test/*_test*"
+    "test": "EXCEPT=neo4j nodeunit test/*_test*"
   },
   "engines": [
     "node >= 0.4.0"