/* * 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 . */ import { Engine } from "../../core/engine"; import { ParsedConfig } from "../../util/configParser"; import { Middleware } from "../types"; /** * Creates a engine and middleware that * inserts the engine into the request objects. * @param config - Parsed database schema. */ 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)); config.enumTypes.forEach ((enumt) => engine.addEnumType(enumt)); config.sources.forEach ((sourc) => engine.addSource(sourc)); return function engineMiddleware(req, res, next) { req.engine = engine; next(); }; }