magic-models
Version:
A simple, free software magical ORM.
62 lines (54 loc) • 1.4 kB
JavaScript
module.exports = function(config) {
var Client = require('mariasql');
var uvrun = require('uvrun-12');
var EventEmitter = require('events').EventEmitter;
var orm = new EventEmitter;
var models = require('./modelDefine');
orm.models = {};
orm.client = new Client();
orm.client.connect(config);
orm.client.on('connect', function() {
orm.emit('loaded');
}).on('error', function(e) {
orm.emit('error', e);
});
orm.validate = require('./validation');
orm.modelsDir = function(dir) {
require('./modelsDir')(dir, orm);
}
orm.query = function(query, callback) {
orm.client.query(query)
.on('result', function(res) {
var datas = [];
res.on('row', function(row) {
datas.push(row);
}).on('end', function(infos) {
infos.query = query;
callback(null, datas, infos);
}).on('error', function(e) {
callback(e, undefined, {query: query});
});
});
}
orm.exit = function() {
return orm.client.end();
}
orm.queryAsync = function(query) {
require('deprecate-me')({since: '0.7.0', removed: '1.0.0'});
var datas;
orm.query(query, function(e, r, i) {
datas = {
errors: e,
rows: r,
infos: i
};
});
while (!datas)
uvrun.runOnce();
return datas;
}
orm.define = function(name, fields, options) {
models.define(name, fields, options, orm);
}
return orm;
}