UNPKG

magic-models

Version:

A simple, free software magical ORM.

62 lines (54 loc) 1.4 kB
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; }