Skip to content

Commit 23929ad

Browse files
authored
Merge pull request #26 from BoolJS/develop
Recursively load database models
2 parents 059bfda + fc53102 commit 23929ad

2 files changed

Lines changed: 27 additions & 10 deletions

File tree

lib/api/loaders/database.js

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,35 @@
11
'use strict';
22

3+
const isFunction = obj => !!(obj && obj.constructor && obj.call && obj.apply);
4+
35
const { Plugins, Error } = require('booljs.api');
46

7+
/**
8+
* @private
9+
* @description Recursively fetches models
10+
* @param {Object} instance - The application instance
11+
* @param {Object} models - The models Object
12+
* @param {Object} loader - The loader used to try loading the model
13+
* @param {Object} connection - The connection (if any) used by the driver
14+
* @return {Promise}
15+
*/
16+
exports.fetchModels = async function (instance, models, loader, connection) {
17+
for (let model in models) {
18+
if (!isFunction(models[model])) {
19+
await exports.fetchModels(instance, models[model], loader, connection);
20+
} else if (models[model].prototype instanceof loader.modelClass()) {
21+
instance.insertComponent(model, await loader.fetchModels(
22+
instance, model, models[model], connection
23+
), models);
24+
}
25+
}
26+
}
27+
528
/**
629
* @private
730
* @description Loads database from a DatabaseLoader plugin
8-
* @param {Object} _instance - The application instance
9-
* @param {Object} _loader - An existing database loader
31+
* @param {Object} instance - The application instance
32+
* @param {Object} drivers - An existing list of database drivers
1033
* @return {Promise}
1134
*/
1235
module.exports = async function DatabaseLoader (instance, drivers) {
@@ -22,12 +45,6 @@ module.exports = async function DatabaseLoader (instance, drivers) {
2245
);
2346

2447
let { models } = instance.getComponents();
25-
for (let model in models) {
26-
if (models[model].prototype instanceof loader.modelClass()) {
27-
instance.insertComponent(model, await loader.fetchModels(
28-
instance, model, models[model], connection
29-
), models);
30-
}
31-
}
48+
await exports.fetchModels(instance, models, loader, connection);
3249
}
3350
};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "booljs",
3-
"version": "0.7.15",
3+
"version": "0.7.16",
44
"description": "Bool MVC Framework - Bootstraping Unit",
55
"main": "lib/index.js",
66
"license": "GPL-3.0",

0 commit comments

Comments
 (0)