All files / framework/src/api/db DBFactory.js

100% Statements 12/12
50% Branches 1/2
100% Functions 2/2
100% Lines 12/12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46      1x 1x   1x                   1x               1x             1x         2x 2x 2x 2x 2x       1x  
/**
 * @module DBFactory
 */
const Model = require('objection').Model;
const Knex = require('knex');
 
const env = process.env.NODE_ENV || 'production';
 
/**
 * @param knexFile {string} path to knex file
 * @type {Object}
 * @property {TODO} TODO
 * @return {DBFactoryObject}
 */
class DBFactory {
    constructor() {
        this.Models = {
            BasicModel: require('./model/BasicModel'),
            PublicModel: require('./model/PublicModel'),
            UserModel: require('./model/user/UserModel'),
            AccountModel: require('./model/user/AccountModel'),
            RoleModel: require('./model/access/RoleModel'),
            PermissionModel: require('./model/access/PermissionModel'),
        };
        this.DAO = {
            BasciDAO: require('./dao/BasicDAO'),
            UserDAO: require('./dao/user/UserDAO'),
            AccountDAO: require('./dao/user/AccountDAO'),
            RoleDAO: require('./dao/access/RoleDAO'),
            PermissionDAO: require('./dao/access/PermissionDAO'),
        };
        this.Migrations = require('../../constants/migrations');
    }
 
    init(knexfile) {
        /* eslint-disable import/no-dynamic-require */
        const knexConfig = require(`${knexfile}`);
        const knex = new Knex(knexConfig[env]);
        Model.knex(knex);
        this.Model = Model;
        this.knex = knex;
    }
}
 
module.exports = new DBFactory();