UNPKG

plyql

Version:

A SQL-like interface for Plywood

55 lines (54 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var plywood_1 = require("plywood"); var json_server_1 = require("./json-server"); var plyql_executor_1 = require("./plyql-executor"); function plyqlJSONServer(port, context, timezone) { json_server_1.createJSONServer(port, function (parameters, res) { var sql = parameters.sql, expression = parameters.expression; var resultPromise; if (expression) { var ex = void 0; try { ex = plywood_1.Expression.fromJSLoose(expression); } catch (e) { res.status(400).send({ error: e.message }); return; } resultPromise = plyql_executor_1.executePlywood(ex, context, timezone); } else { var sqlParse = void 0; try { sqlParse = plywood_1.Expression.parseSQL(sql); } catch (e) { res.status(400).send({ error: e.message }); return; } if (sqlParse.verb && sqlParse.verb !== 'SELECT') { res.status(400).send({ error: "Unsupported SQL verb " + sqlParse.verb + " must be SELECT, DESCRIBE, SHOW, or a raw expression" }); return; } resultPromise = plyql_executor_1.executeSQLParse(sqlParse, context, timezone); } resultPromise .then(function (value) { if (plywood_1.Dataset.isDataset(value)) { res.json({ result: value.toJS() }); } else { res.json({ result: value }); } }) .catch(function (e) { res.status(500).send({ error: e.message }); }); }); } exports.plyqlJSONServer = plyqlJSONServer;