|
|
@@ -1,8 +1,43 @@
|
|
|
const joi = require('joi');
|
|
|
+const { Router } = require('express');
|
|
|
|
|
|
const { getObjectId } = require('server/modules/db');
|
|
|
const { clientError } = require('server/modules/client-error');
|
|
|
|
|
|
+function makeCrudRoutes(config, db, name, app, crud) {
|
|
|
+ const router = new Router();
|
|
|
+
|
|
|
+ router.get('/', async (req, res) => {
|
|
|
+
|
|
|
+ const users = await crud.getDocs(db);
|
|
|
+
|
|
|
+ res.json({ [name]: users });
|
|
|
+ });
|
|
|
+
|
|
|
+ router.post('/', async (req, res) => {
|
|
|
+
|
|
|
+ const result = await crud.insertDoc(db, req.body);
|
|
|
+
|
|
|
+ res.json(result);
|
|
|
+ });
|
|
|
+
|
|
|
+ router.put('/:id', async (req, res) => {
|
|
|
+
|
|
|
+ await crud.modifyDoc(db, req.params.id, req.body);
|
|
|
+
|
|
|
+ res.json({ ok: true });
|
|
|
+ });
|
|
|
+
|
|
|
+ router.delete('/:id', async (req, res) => {
|
|
|
+
|
|
|
+ await crud.deleteDoc(db, req.params.id);
|
|
|
+
|
|
|
+ res.json({ ok: true });
|
|
|
+ });
|
|
|
+
|
|
|
+ app.use(`/${name}`, router);
|
|
|
+}
|
|
|
+
|
|
|
function makeInsertDoc(collection, schema) {
|
|
|
const schemaRequired = Object.keys(schema)
|
|
|
.reduce((items, key) => ({
|
|
|
@@ -87,6 +122,7 @@ function makeMongoCrud(collection, schema) {
|
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
|
+ makeCrudRoutes,
|
|
|
makeMongoCrud
|
|
|
};
|
|
|
|