Quellcode durchsuchen

Improve database creation

Tatiana Inama vor 7 Jahren
Ursprung
Commit
b9b3a6dd83

+ 19 - 19
ktchn/src/ingredients/data.ts

@@ -5,7 +5,7 @@ const data: Ingredient[] = [{
   variants: ['plain flour', 'all purpose flour', 'regular flour'],
   equivalence: 125,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   translation: {
     dutch: 'patentbloem'
   },
@@ -15,7 +15,7 @@ const data: Ingredient[] = [{
   variants: ['bread flour'],
   equivalence: 127,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   translation: {
     dutch: 'tarwebloem'
   },
@@ -25,7 +25,7 @@ const data: Ingredient[] = [{
   variants: ['pastry flour'],
   equivalence: 114,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   translation: {
     dutch: 'zeeuwsebloem'
   },
@@ -34,103 +34,103 @@ const data: Ingredient[] = [{
   name: 'almond flour',
   equivalence: 96,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'cornflour',
   equivalence: 150,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'self raising flour',
   equivalence: 125,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'honey',
   equivalence: 340,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'semolina',
   equivalence: 167,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'long rice',
   equivalence: 185,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'short rice',
   variants: ['sushi rice'],
   equivalence: 200,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'basmati rice',
   equivalence: 195,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'granulated sugar',
   variants: ['sugar', 'plain sugar'],
   equivalence: 200,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'icing sugar',
   variants: ['confectioner sugar', 'powdered sugar'],
   equivalence: 125,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'caster sugar',
   variants: ['fine sugar'],
   equivalence: 225,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'brown sugar',
   equivalence: 200,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'yeast',
   equivalence: 2.83,
   referenceUnit: 'tsp',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'yogurt',
   variants: ['plain yogurt'],
   equivalence: 245,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 },  {
   name: 'cocoa powder',
   variants: ['cocoa'],
   equivalence: 118,
   referenceUnit: 'cup',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 2
 }, {
   name: 'chicken breast',
   variants: ['chicken', 'skinless chicken'],
   referenceUnit: 'lb',
-  prefferedUnit: 'gr',
+  prefferedUnit: 'g',
   measure: 0
 }, {
   name: 'olive oil',

+ 1 - 1
ktchn/src/ingredients/model.ts

@@ -11,7 +11,7 @@ type Units =
   "tbsp" |
   "tsp" |
   "stick" |
-  "gr" |
+  "g" |
   "ml" |
   "oz" |
   "lb" |

+ 13 - 1
ktchn/src/recipes/controller.ts

@@ -105,8 +105,20 @@ const getByIngredients: Controller = (db) => ({ query }, res) => {
   )
 }
 
+const updateOriginal = (ingredient: IIngredient): string => (`
+  ${ingredient.quantity} ${ingredient.unit||''} ${ingredient.unit && 'of'} ${ingredient.name}
+`);
+
 const update: Controller = (db) => ({params, body}, res) => {
-  const newRecipe = dissoc('_id', body) as Recipe; 
+  let newRecipe = dissoc('_id', body) as Recipe;
+  newRecipe.ingredients = newRecipe.ingredients.map(subRecipe => ({
+    ...subRecipe,
+    ingredients: subRecipe.ingredients.map(ingredient => ({
+      ...ingredient,
+      _original: updateOriginal(ingredient)
+    }))
+  }));
+  
   return db.update<Recipe>(params.id, newRecipe).then(result => res.json(result))
 }
 

+ 17 - 0
ktchn/src/server.ts

@@ -73,9 +73,26 @@ class App {
     return MongoClient.connect('mongodb://127.0.0.1:27017').then(dbClient => dbClient.db('ktchn'));
   }
 
+  private startDB(db: MongoClient.Db): void {
+    db.createCollection('ingredients').then(collection => {
+      collection.createIndex({
+        name: 'text',
+        variants: 'text'
+      }, {
+        //@ts-ignore
+        weights: {
+          name: 10,
+          variants: 5
+        }
+      })
+    });
+    db.createCollection('recipes');
+  }
+
   private launchApp() {
     this.connectDB().then(db => {
       this.routes(db);
+      this.startDB(db);
       const port = this.app.get("port");
       this.app.listen(port, '0.0.0.0', () => {
         console.log(

+ 4 - 0
recipes/src/containers/Recipes/Edit/index.tsx

@@ -33,6 +33,10 @@ class EditRecipe extends React.Component<EditRecipeProps, EditRecipeState> {
 
   }
 
+  updateOriginal = (ingredient: Ingredient): string => (`
+    ${ingredient.quantity} ${ingredient.unit||''} ${ingredient.unit && 'of'} ${ingredient.name}
+  `);
+
   saveRecipe = (recipe: DBRecipe) => {
     updateRecipe(recipe)
       .then((response: any) => {