Bladeren bron

Create Save many plans route

Tatiana Inama 7 jaren geleden
bovenliggende
commit
d8b04b2ae9
2 gewijzigde bestanden met toevoegingen van 14 en 1 verwijderingen
  1. 12 0
      ktchn/src/planner/controller.ts
  2. 2 1
      ktchn/src/planner/routes.ts

+ 12 - 0
ktchn/src/planner/controller.ts

@@ -15,6 +15,8 @@ const mkWeekQuery = (week: string) => ({
   week: parseInt(week) || moment().isoWeek()
 });
 
+const validatePlan = (mbPlan: any) => mbPlan.day && mbPlan.week && mbPlan.recipe && mbPlan.meal;
+
 const validPlan = (mbPlan: any) => {
   if (mbPlan.day && mbPlan.week && mbPlan.recipe && mbPlan.meal) {
     return Promise.resolve({
@@ -68,8 +70,18 @@ const savePlan: Controller<void, PlanDB> = db => req => prevResult => {
   return validPlan(plan).then(db.insertOne)
 }
 
+const saveManyPlans: Controller<void, PlanDB[]> = db => req => prev => {
+  const mbPlanner = req.body;
+  if (mbPlanner.filter) {
+    return db.insertMany(mbPlanner.filter(validatePlan))
+  } else {
+    return Promise.reject('Invalid type: body content must be a Plan Array')
+  }
+
+}
 export {
   getWeekPlanner,
   formatPlanner,
   savePlan,
+  saveManyPlans,
 }

+ 2 - 1
ktchn/src/planner/routes.ts

@@ -2,7 +2,7 @@ import { Router } from 'express';
 import mongoService, { IMongoService } from '../mongo';
 import MongoClient from 'mongodb';
 import { chainP } from '../promise-all-middleware';
-import { getWeekPlanner, formatPlanner, savePlan } from './controller';
+import { getWeekPlanner, formatPlanner, savePlan, saveManyPlans } from './controller';
 
 class PlannerRoutes {
   public router: Router;
@@ -19,6 +19,7 @@ class PlannerRoutes {
     this.router.get('/week/:week', chainP([getWeekPlanner(this.PlannerDB)]));
     this.router.get('/week/:week/organized', chainP([formatPlanner(this.PlannerDB)]));
     this.router.post('/day', chainP([savePlan(this.PlannerDB)]));
+    this.router.post('/', chainP([saveManyPlans(this.PlannerDB)]));
   }
 }