UNPKG

@richardo2016/rcli

Version:
62 lines (61 loc) 1.81 kB
Object.defineProperty(exports, "__esModule", { value: true }); const path = require("path"); const mq = require("mq"); const http = require("http"); const App = require("fib-app"); const parseQuerystringDotKey = require("parse-querystring-dotkey"); const DEFAULT_CONN_STR = `sqlite:app.db?pool=true`; function transformQueryToData(req) { req.query.clear(); const parsed = parseQuerystringDotKey(req.queryString); req.query.set(parsed); req.query.set({ where: JSON.stringify(parsed.where || {}), }); if (parsed._body) req.json(parsed._body); if (parsed._headers) req.headers.set(parsed._headers); if (parsed._form) req.form.set(parsed._form); } function filterHttpMethod(input) { input = input.toLowerCase(); switch (input) { case 'post': case 'put': case 'patch': case 'delete': break; default: case 'get': input = 'get'; break; } return input; } function handler(url, ctx) { let { ormEntry, httpMethod, connection } = ctx; if (!path.isAbsolute(ormEntry)) ormEntry = path.resolve(process.cwd(), ormEntry); httpMethod = filterHttpMethod(httpMethod); connection = connection || process.env.RCLI_CONNECTION || DEFAULT_CONN_STR; const app = new App(connection, { apiPathPrefix: '/api' }, {}); app.dbPool.use(require(ormEntry)); const req = new http.Request(); const [req_value, qs] = url.split('?'); req.value = req_value; req.queryString = qs; req.method = httpMethod; req.json({}); mq.invoke([ (req) => transformQueryToData(req), app ], req); const res = req.response.json(); console.dir(res); app.dbPool.clear(); } exports.default = handler;