alekzonder/maf

View on GitHub
src/Service/Init/Di.js

Summary

Maintainability
A
1 hr
Test Coverage
var path = require('path');

var Di = require(path.resolve(__dirname + '/../../Di'));
var RequestDebug = require(path.resolve(__dirname + '/../../Request/Debug'));

module.exports = function (init) {

    return function (logger, config, originalDi) {

        return new Promise((resolve, reject) => {

            var di = new Di();

            di.config = config;

            di.logger = logger;

            Promise.resolve()
                .then(() => {

                    if (originalDi) {
                        di.debug = new RequestDebug();
                        di.setConnections(originalDi.getConnections());
                    } else if (init.db) {
                        return init.db(config, di);
                    }

                })
                .then(() => {
                    return init.models(config, di);
                })
                .then((models) => {
                    di.models = models;
                    return init.api(config, models, di);
                })
                .then((api) => {
                    di.api = api;
                    resolve(di);
                })
                .catch((error) => {
                    reject(error);
                });

        });

    };

};