UNPKG

3.44 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 _datatables = require('../lib/objects/datatables'),
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.index = exports.list = {
30 name: 'datatables/list',
31 description: 'i list all datatables 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 datatables = _datatables.list(req.params.datasourceid);
41 if (!datatables)
42 return router.responseError(new router.ErrorTemplate('Failed to find data table'), req, res);
43
44 response.datatables = ce.clone(datatables);
45 return router.responseSuccess(response, req, res);
46 }
47};
48
49/**
50 * Lists all available dimensions. You can provide parameters and ask for a specific data source and datatable.
51 *
52 * The returned list will contain only dimensions authorized for the authenticated user.
53 *
54 * @method get
55 * @param {string} [dimensionid] Dimension ID.
56 * @return {object} json structure holding the dimension details.
57 */
58exports.get = {
59 name: 'datatables/get',
60 description: 'i get a specific datatable',
61 inputs: {
62 required: ['id'],
63 optional: []
64 },
65 outputExample: {},
66 permission: ['access_system'],
67 run: function (req, res) {
68 var response = {};
69 var datatable = _datatables.get(req.params.datatableid);
70 if (!datatable)
71 return router.responseError(new router.ErrorTemplate('Failed to find data table'), req, res);
72
73 response.datatable = ce.clone(datatable);
74 return router.responseSuccess(response, req, res);
75 }
76};
77
78/**
79 * Validates the dimension database integrity.
80 *
81 * @method get
82 * @param {string} [dimensionid] Dimension ID.
83 * @return {object} json structure holding the validation details.
84 */
85exports.validate = {
86 name: 'datatables/validate',
87 description: 'i validate a specific datatable',
88 inputs: {
89 required: ['datatableid'],
90 optional: []
91 },
92 outputExample: {},
93 permission: ['manage_system'],
94 run: function (req, res) {
95 var response = {};
96 var datatable = _datatables.get(req.params.datatableid);
97 var query = connector.createQuery();
98
99 response.datatable = ce.clone(datatable);
100 response.validated = false;
101
102 query.sql = 'SELECT * FROM ' + datatable.name + ';';
103 query.limit = 1;
104 query.datasource = datatable.datasource;
105 connector.executeQuery(query, function (query, rows, fields, error) {
106 response.queryInformation = ce.clone(query);
107 if (error)
108 throw error;
109 else {
110 response.validated = true;
111 }
112 return router.responseSuccess(response, req, res);
113 });
114 }
115};