UNPKG

3.4 kBJavaScriptView Raw
1/**
2 * joola.io
3 *
4 * Copyright Joola Smart Solutions, Ltd. <info@joo.la>
5 *
6 * Licensed under GNU General Public License 3.0 or later.
7 * Some rights reserved. See LICENSE, AUTHORS.
8 *
9 * @license GPL-3.0+ <http://spdx.org/licenses/GPL-3.0+>
10 */
11
12var
13 router = require('./index'),
14 url = require('url'),
15
16 _datasources = require('../lib/objects/datasources'),
17 connector = require('../lib/connectors/connector');
18
19/**
20 * Lists all available dimensions. You can provide parameters and ask for a specific data source and datatable.
21 *
22 * The returned list will contain only dimensions authorized for the authenticated user.
23 *
24 * @method list
25 * @param {string} [datasourceid] Datasource ID.
26 * @param {string} [datatableid] Datatable ID.
27 * @return {object} json structure listing all dimensions.
28 */
29exports.list = {
30 name: 'datasources/list',
31 description: 'i list all datasources available',
32 inputs: {
33 required: [],
34 optional: ['datasourceid']
35 },
36 outputExample: {},
37 permission: ['access_system'],
38 run: function (req, res) {
39 var response = {};
40 var datasources = _datasources.list();
41 if (!datasources)
42 return router.responseError(new router.ErrorTemplate('Failed to find data table'), req, res);
43
44 response.datatables = ce.clone(datasources);
45 return router.responseSuccess(response, req, res);
46
47 }
48};
49
50/**
51 * Lists all available dimensions. You can provide parameters and ask for a specific data source and datatable.
52 *
53 * The returned list will contain only dimensions authorized for the authenticated user.
54 *
55 * @method get
56 * @param {string} [dimensionid] Dimension ID.
57 * @return {object} json structure holding the dimension details.
58 */
59exports.get = {
60 name: 'datasources/get',
61 description: 'i get a specific datasources',
62 inputs: {
63 required: ['id'],
64 optional: []
65 },
66 outputExample: {},
67 permission: ['access_system'],
68 run: function (req, res) {
69 var response = {};
70 var datasource = _datasources.get(req.params.datasourceid);
71 if (!datasource)
72 return router.responseError(new router.ErrorTemplate('Failed to find data table'), req, res);
73
74 response.datasource = ce.cloneuptolevel(datasource, 0);
75 return router.responseSuccess(response, req, res);
76 }
77};
78
79/**
80 * Validates the dimension database integrity.
81 *
82 * @method get
83 * @param {string} [dimensionid] Dimension ID.
84 * @return {object} json structure holding the validation details.
85 */
86exports.validate = {
87 name: 'datasources/validate',
88 description: 'i validate a specific datasources',
89 inputs: {
90 required: ['datasourceid'],
91 optional: []
92 },
93 outputExample: {},
94 permission: ['manage_system'],
95 run: function (req, res) {
96 var response = {};
97 var datasource = _datasources.get(req.params.datasourceid);
98 var query = connector.createQuery();
99
100 response.datasource = ce.clone(datasource);
101 response.validated = false;
102
103 query.sql = 'SELECT 1;';
104 query.limit = 1;
105 query.datasource = datasource;
106 connector.executeQuery(query, function (query, rows, fields, error) {
107 response.queryInformation = ce.clone(query);
108 if (error)
109 throw error;
110 else {
111 response.validated = true;
112 }
113 return router.responseSuccess(response, req, res);
114 });
115 }
116};