Browse Source

Контроллеры маршрутов

Book Pauk 6 years ago
parent
commit
552e82bef0

+ 8 - 0
server/controllers/BaseController.js

@@ -0,0 +1,8 @@
+class BaseController {
+    constructor(connPool, config) {
+        this.connPool = connPool;
+        this.config = config;
+    }
+}
+
+module.exports = BaseController;

+ 11 - 0
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;

+ 3 - 0
server/controllers/index.js

@@ -0,0 +1,3 @@
+module.exports = {
+    MiscController: require('./MiscController'),
+}

+ 34 - 0
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 = {