engine.ts 1.58 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/*
 * Copyright (C) 2017 Centro de Computacao Cientifica e Software Livre
 * Departamento de Informatica - Universidade Federal do Parana
 *
 * This file is part of blendb.
 *
 * blendb is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * blendb is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with blendb.  If not, see <http://www.gnu.org/licenses/>.
 */

import { Engine } from "../../core/engine";
import { ParsedConfig } from "../../util/configParser";
import { Middleware } from "../types";

25 26 27 28 29
/**
 * Creates a engine and middleware that
 * inserts the engine into the request objects.
 * @param config - Parsed database schema.
 */
30 31 32 33 34 35
export function EngineMw (config: ParsedConfig): Middleware {
    let engine: Engine = new  Engine();

    config.metrics.forEach ((met) => engine.addMetric(met));
    config.dimensions.forEach ((dim) => engine.addDimension(dim));
    config.views.forEach ((view) => engine.addView(view));
36
    config.enumTypes.forEach ((enumt) => engine.addEnumType(enumt));
37
    config.sources.forEach ((sourc) => engine.addSource(sourc));
38 39 40 41 42 43

    return function engineMiddleware(req, res, next) {
        req.engine = engine;
        next();
    };
}