From 552e82bef053e0f661ecc87da8a4f2e33ff9ba81 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Thu, 27 Dec 2018 14:23:08 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB?= =?UTF-8?q?=D0=BB=D0=B5=D1=80=D1=8B=20=D0=BC=D0=B0=D1=80=D1=88=D1=80=D1=83?= =?UTF-8?q?=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/controllers/BaseController.js | 8 +++++++ server/controllers/MiscController.js | 11 +++++++++ server/controllers/index.js | 3 +++ server/routes.js | 34 ++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 server/controllers/BaseController.js create mode 100644 server/controllers/MiscController.js create mode 100644 server/controllers/index.js diff --git a/server/controllers/BaseController.js b/server/controllers/BaseController.js new file mode 100644 index 00000000..70cfecc9 --- /dev/null +++ b/server/controllers/BaseController.js @@ -0,0 +1,8 @@ +class BaseController { + constructor(connPool, config) { + this.connPool = connPool; + this.config = config; + } +} + +module.exports = BaseController; \ No newline at end of file diff --git a/server/controllers/MiscController.js b/server/controllers/MiscController.js new file mode 100644 index 00000000..2c5035b7 --- /dev/null +++ b/server/controllers/MiscController.js @@ -0,0 +1,11 @@ +const log = require('../core/getLogger').getLog(); +const BaseController = require('./BaseController'); +const Lazy = require('lazy.js'); + +class MiscController extends BaseController { + async configValue(req) { + return Lazy(this.config).pick([req.params.name]).toObject(); + } +} + +module.exports = MiscController; diff --git a/server/controllers/index.js b/server/controllers/index.js new file mode 100644 index 00000000..9e6aace2 --- /dev/null +++ b/server/controllers/index.js @@ -0,0 +1,3 @@ +module.exports = { + MiscController: require('./MiscController'), +} \ No newline at end of file diff --git a/server/routes.js b/server/routes.js index 761fb0b2..6f8b5f02 100644 --- a/server/routes.js +++ b/server/routes.js @@ -1,6 +1,40 @@ const log = require('./core/getLogger').getLog(); +const c = require('./controllers'); function initRoutes(app, connPool, config) { + const misc = new c.MiscController(connPool, config); + + const routes = [ + ['POST', '/api/config/:name', misc, 'configValue', {}], + + ['GET', '/api/config/:name', misc, 'configValue', {}], + ]; + + for (route of routes) { + const [httpMethod, path, controller, handler, options] = route; + + const callback = async function(req, res) { + try { + const result = await controller[handler](req, res, options); + + if (result !== false) + res.send(result); + } catch (e) { + res.status(500).send({error: e.message}); + } + }; + + switch (httpMethod) { + case 'GET' : + app.get(path, callback); + break; + case 'POST': + app.post(path, callback); + break; + default: + throw new Error(`initRoutes error: unknown httpMethod: ${httpMethod}`); + } + } }; module.exports = {