23 lines
650 B
JavaScript
23 lines
650 B
JavaScript
'use strict';
|
|
|
|
const dataviews = require('.');
|
|
|
|
module.exports = class DataviewFactory {
|
|
static get dataviews() {
|
|
return Object.keys(dataviews).reduce((allDataviews, dataviewClassName) => {
|
|
allDataviews[dataviewClassName.toLowerCase()] = dataviews[dataviewClassName];
|
|
return allDataviews;
|
|
}, {});
|
|
}
|
|
|
|
static getDataview (query, dataviewDefinition) {
|
|
const { type, options, sql } = dataviewDefinition;
|
|
|
|
if (!this.dataviews[type]) {
|
|
throw new Error('Invalid dataview type: "' + type + '"');
|
|
}
|
|
|
|
return new this.dataviews[type](query, options, sql);
|
|
}
|
|
};
|