From d8d9d54679b02f0acad29097f75aaa811d63d4e0 Mon Sep 17 00:00:00 2001 From: Thomas Mack Date: Sun, 6 Jan 2019 07:23:17 +0100 Subject: [PATCH] Update API for COPY Recepie --- app.js | 6 +++- routes/recepie.js | 66 ++++++++++++++++++++++++++++++++++++++++-- routes/recepieSteps.js | 3 +- 3 files changed, 70 insertions(+), 5 deletions(-) diff --git a/app.js b/app.js index 365348c..2fca503 100644 --- a/app.js +++ b/app.js @@ -21,7 +21,11 @@ var app = express(); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'pug'); -app.use(cors()); +// Settin Cors Options +var corsOptions = { + methods: ['GET', 'PUT', 'POST', 'DELETE', 'COPY'] +} +app.use(cors(corsOptions)); app.use(logger('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: false })); diff --git a/routes/recepie.js b/routes/recepie.js index 160ad22..7dba2e6 100644 --- a/routes/recepie.js +++ b/routes/recepie.js @@ -1,5 +1,7 @@ const express = require('express'); const router = express.Router(); +var cors = require('cors'); + const bcrypt = require('bcrypt'); const randToken = require('rand-token'); @@ -91,9 +93,19 @@ router.post('/', function(req, res, next) { let result = {}; result['recepies'] = rs.rows[0]; - req.db.query("INSERT into rezept_dauer (rezept, sort, name, dauer) VALUES ($1, 1, 'Zubereitung', '30m')", [rs.rows[0].id], (err, rs) => {}); - req.db.query("INSERT into rezept_wertung (nutzer, rezept, wert, wertungskategorie) VALUES ($1, $2, 5, (SELECT id FROM wertungskategorie WHERE schluessel = 'sum'))", [rs.rows[0].nutzer, rs.rows[0].id], (err, rs) => {}); - req.db.query("INSERT into rezept_schitt (rezept, sort, name, beschreibung) VALUES ($1, 1, 'Zubreitung', 'Mit Sherry ablöschen, Sahne hinzugeben und Parmesan reiben.')", [rs.rows[0].id], (err, rs) => {}); + let querys = [ + "INSERT into rezept_dauer (rezept, sort, name, dauer) VALUES ($1, 1, 'Zubereitung', '30m')", + "INSERT into rezept_wertung (nutzer, rezept, wert, wertungkategorie) VALUES ($1, $2, 5, (SELECT id FROM wertungkategorie WHERE schluessel = 'sum'))", + "INSERT into rezept_schritt (rezept, sort, name, beschreibung) VALUES ($1, 1, 'Zubereitung', 'Mit Sherry ablöschen, Sahne hinzugeben und Parmesan reiben.')" + ]; + + console.log(querys[0],rs.rows[0].id); + console.log(querys[1],[rs.rows[0].nutzer, rs.rows[0].id]); + console.log(querys[2],rs.rows[0].id); + + req.db.query(querys[0], [rs.rows[0].id], (err, rs) => {}); + req.db.query(querys[1], [rs.rows[0].nutzer, rs.rows[0].id], (err, rs) => {}); + req.db.query(querys[2], [rs.rows[0].id], (err, rs) => {}); res.status(200).json(result); @@ -106,6 +118,54 @@ router.get('/:recepieId', function(req, res, next) { res.status(200).json(req.recepie); }); + +router.options('/:recepieId', cors()) + +router.copy('/:recepieId', cors(), function(req, res, next) { + let recepie = req.recepie; + if(!recepie.schluessel) recepie.schluessel = randToken.uid(8); + if(!recepie.schwierigkeit || !recepie.name || !recepie.nutzer) { + return res.status(400).send("Wrong Params") + } + let query = "INSERT INTO rezept (nutzer, name, schluessel, schwierigkeit, portionen, beschreibung) "+ + " VALUES ($1, $2, $3, $4, $5, $6)" + + " returning *"; + let values = [recepie.nutzer, recepie.name+"Kopie", recepie.schluessel+"-kopie", recepie.schwierigkeit, recepie.portionen, recepie.beschreibung]; + + if(DEBUG) console.log(query); + + req.db.query(query, values, (err, rs) => { + if(err && err.constraint && err.constraint ==='idx_rezept_email') { + return res.status(409).send("Recipie Key already in use"); + } else if (err){ + next(err); + } else { + let result = {}; + result['recepies'] = rs.rows[0]; + + let querys = [ + "INSERT into rezept_dauer (rezept, sort, name, dauer, beschreibung) SELECT $2, sort, name, dauer, beschreibung FROM rezept_dauer where rezept = $1", + "INSERT into rezept_zutat (rezept, zutat, einheit, menge, beschreibung) SELECT $2, zutat, einheit, menge, beschreibung FROM rezept_zutat WHERE rezept = $1", + "INSERT into rezept_geraet (rezept, geraet, einheit, menge, beschreibung) SELECT $2, geraet, einheit, menge, beschreibung FROM rezept_geraet WHERE rezept = $1", + "INSERT into rezept_schritt (rezept, sort, name, beschreibung) SELECT $2, sort, name, beschreibung FROM rezept_schritt where rezept = $1" + ]; + + console.log(querys[0],recepie.id); + console.log(querys[1],recepie.id); + console.log(querys[2],recepie.id); + console.log(querys[3],recepie.id); + + req.db.query(querys[0], [recepie.id, rs.rows[0].id], (err, rs) => {}); + req.db.query(querys[1], [recepie.id, rs.rows[0].id], (err, rs) => {}); + req.db.query(querys[2], [recepie.id, rs.rows[0].id], (err, rs) => {}); + req.db.query(querys[3], [recepie.id, rs.rows[0].id], (err, rs) => {}); + + + res.status(200).json(result); + } + }); +}); + router.put('/:recepieId', function(req, res, next) { let recepie = req.body.recepies; let query = "UPDATE rezept set name = '"+recepie.name+ diff --git a/routes/recepieSteps.js b/routes/recepieSteps.js index 4a1d3ef..c0781e6 100644 --- a/routes/recepieSteps.js +++ b/routes/recepieSteps.js @@ -25,7 +25,8 @@ router.param('stepId', function(req, res, next, id) { router.get('/', function(req, res, next) { let query = " Select rezept_schritt.id, name, sort, beschreibung "+ " FROM rezept_schritt "+ - " WHERE rezept =$1"; + " WHERE rezept =$1"+ + " ORDER BY sort"; if(DEBUG) console.log(query); req.db.query(query,[req.recepieId], (err, rs) => { if (err){