UNPKG

acha-framework

Version:

is a modular framework on both client (angular.js) and server (node.js) side, it provides security, orm, ioc, obfuscation and ...

90 lines 2.84 kB
(function (undefined) { Ioc.define('backend.orm', [ 'backend.configuration', 'backend.logHelper', 'backend.models.user' ], function (provide, config, logger, User) { const caminte = require('caminte'); const Schema = caminte.Schema; const AchaOrm = function () { this.schemas = []; this.models = {}; this.provider(); }; AchaOrm.prototype.provider = function () { switch (config.adapter) { case 'mysql': this.database = this.MySQl(); break; case 'mongodb': this.database = this.MongoDB(); break; default: this.database = this.SQLite(); break; } }; AchaOrm.prototype.MySQl = function () { var db_config = { driver: 'mysql', host: config.database.connection || 'localhost', port: config.database.port || '3306', username: config.database.username || '', password: config.database.password || '', database: config.database.database || 'acha_application', pool: true }; return new Schema(db_config.driver, db_config); }; AchaOrm.prototype.MongoDB = function () { var db_config = { driver: 'mongodb', host: config.database.connection || 'localhost', port: config.database.port || '27017', username: config.database.username || '', password: config.database.password || '', database: config.database.database || 'acha_application', pool: true }; return new Schema(db_config.driver, db_config); }; AchaOrm.prototype.SQLite = function () { var db_path = PATH.resolve(config.rootDirectory, 'database'); var db_file = PATH.resolve(db_path, config.database.connection || 'acha_application.database'); var db_config = { driver: 'sqlite3', database: db_file, autoReconnect: true }; FSX.mkdirsSync(db_path); return new Schema(db_config.driver, db_config); }; AchaOrm.prototype.define = function (schema) { this.schemas.push(schema); }; AchaOrm.prototype.init = function () { return Q.Promise(function (resolve, reject) { resolve(); }); }; AchaOrm.prototype.migrate = function () { const self = this; return Q.Promise(function (resolve, reject) { self.schemas.unshift(User(self)); self.schemas.forEach(function (item) { self.models[item.name] = self.database.define(item.name, item.definitions); item.patch(self.models[item.name]); }); self.database.autoupdate(function (err) { if (err) { logger.log(err); reject(err); return; } resolve(); }); }); }; provide(new AchaOrm()); }); }());