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 = {