|
|
@@ -6,48 +6,45 @@ import { checkReqBody, checkParams } from './modules/check-schema.js';
|
|
|
import dbWrapper from './modules/db.js';
|
|
|
import logger from './modules/logging.js';
|
|
|
|
|
|
-function registerRoute(db, server, log) {
|
|
|
- return function setupRoute(routeSetup) {
|
|
|
- const route = routeSetup({ db, yup, log });
|
|
|
-
|
|
|
- if (route.schema) {
|
|
|
- switch (route.type) {
|
|
|
- case 'get':
|
|
|
- server.get(route.route, checkParams(route.schema, log, route.route), route.handler);
|
|
|
- break;
|
|
|
- case 'post':
|
|
|
- server.post(route.route, checkReqBody(route.schema, log, route.route), route.handler);
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new Error();
|
|
|
- }
|
|
|
- } else {
|
|
|
- switch (route.type) {
|
|
|
- case 'get':
|
|
|
- server.get(route.route, route.handler);
|
|
|
- break;
|
|
|
- case 'post':
|
|
|
- server.post(route.route, route.handler);
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new Error();
|
|
|
- }
|
|
|
+function setupRoute(routeFactory, db, server, log) {
|
|
|
+ const route = routeFactory({ db, yup, log });
|
|
|
+
|
|
|
+ if (route.schema) {
|
|
|
+ switch (route.verb) {
|
|
|
+ case 'get':
|
|
|
+ server.get(route.path, checkParams(route.schema, log, route.path), route.handler);
|
|
|
+ break;
|
|
|
+ case 'post':
|
|
|
+ server.post(route.path, checkReqBody(route.schema, log, route.path), route.handler);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new Error();
|
|
|
}
|
|
|
- };
|
|
|
+ } else {
|
|
|
+ switch (route.verb) {
|
|
|
+ case 'get':
|
|
|
+ server.get(route.path, route.handler);
|
|
|
+ break;
|
|
|
+ case 'post':
|
|
|
+ server.post(route.path, route.handler);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new Error();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-function start(routes, host = '127.0.0.1', port = 8080, dbOpts, serverOpts) {
|
|
|
- const client = redis.createClient(dbOpts);
|
|
|
+function start({ routes, host, port, redisOpts, restifyOpts }) {
|
|
|
+ const client = redis.createClient(redisOpts);
|
|
|
|
|
|
client.on('connect', () => {
|
|
|
logger.info('connected to db, starting server...');
|
|
|
- const server = restify.createServer(serverOpts);
|
|
|
+ const server = restify.createServer(restifyOpts);
|
|
|
const db = dbWrapper(client);
|
|
|
- const setupRoute = registerRoute(db, server, logger);
|
|
|
server.use(restify.plugins.bodyParser());
|
|
|
|
|
|
- routes.forEach(route => {
|
|
|
- setupRoute(route);
|
|
|
+ routes.forEach(routeFactory => {
|
|
|
+ setupRoute(routeFactory, db, server, logger);
|
|
|
});
|
|
|
|
|
|
server.listen(port, host, () => {
|