Added Categories
This commit is contained in:
parent
d8d9d54679
commit
f4efbbc975
16
app.js
16
app.js
|
@ -5,6 +5,9 @@ var logger = require('morgan');
|
|||
var cors = require('cors');
|
||||
var sassMiddleware = require('node-sass-middleware');
|
||||
|
||||
//var passport = require('passport');
|
||||
//var LocalStrategy = require('passport-local').Strategy;
|
||||
|
||||
const db = require('./db')
|
||||
|
||||
const PORT = process.env.PORT || 4000;
|
||||
|
@ -26,6 +29,19 @@ var corsOptions = {
|
|||
methods: ['GET', 'PUT', 'POST', 'DELETE', 'COPY']
|
||||
}
|
||||
app.use(cors(corsOptions));
|
||||
|
||||
// Setting up passport
|
||||
|
||||
/*passport.use(
|
||||
new LocalStrategy(
|
||||
function(username, password, done) {
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
);
|
||||
*/
|
||||
|
||||
app.use(logger('dev'));
|
||||
app.use(express.json());
|
||||
app.use(express.urlencoded({ extended: false }));
|
||||
|
|
14
migration.js
14
migration.js
|
@ -106,7 +106,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS rezept_schritt" +
|
|||
" rezept bigint NOT NULL REFERENCES rezept(id)," +
|
||||
" sort INT NOT NULL DEFAULT 0," +
|
||||
" name text NOT NULL," +
|
||||
" beschreibung text NOT NULL" +
|
||||
" beschreibung text" +
|
||||
" );" +
|
||||
|
||||
);
|
||||
|
@ -116,7 +116,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS rezept_kategorie" +
|
|||
" rezept bigint NOT NULL REFERENCES rezept(id)," +
|
||||
" kategorie bigint NOT NULL REFERENCES kategorie(id)," +
|
||||
" modifikator NUMERIC NOT NULL DEFAULT 1," +
|
||||
" beschreibung text NOT NULL" +
|
||||
" beschreibung text" +
|
||||
" );" +
|
||||
|
||||
);
|
||||
|
@ -126,7 +126,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS nutzer" +
|
|||
" name text NOT NULL," +
|
||||
" email text NOT NULL," +
|
||||
" kennwort text NOT NULL," +
|
||||
" beschreibung text NOT NULL" +
|
||||
" beschreibung text" +
|
||||
" );" +
|
||||
|
||||
);
|
||||
|
@ -144,7 +144,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_rolle" +
|
|||
" id bigserial PRIMARY KEY," +
|
||||
" nutzer bigint NOT NULL REFERENCES nutzer(id)," +
|
||||
" rolle bigint NOT NULL REFERENCES rolle(id)," +
|
||||
" beschreibung text NOT NULL" +
|
||||
" beschreibung text" +
|
||||
" );" +
|
||||
|
||||
);
|
||||
|
@ -153,7 +153,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_favorit" +
|
|||
" id bigserial PRIMARY KEY," +
|
||||
" nutzer bigint NOT NULL REFERENCES nutzer(id)," +
|
||||
" rezept bigint NOT NULL REFERENCES rezept(id)," +
|
||||
" beschreibung text NOT NULL" +
|
||||
" beschreibung text" +
|
||||
" );" +
|
||||
|
||||
);
|
||||
|
@ -164,7 +164,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS rezept_wertung" +
|
|||
" rezept bigint NOT NULL REFERENCES rezept(id)," +
|
||||
" wertungkategorie bigint NOT NULL REFERENCES wertungkategorie(id)," +
|
||||
" wert INTEGER NOT NULL DEFAULT 5," +
|
||||
" beschreibung text NOT NULL" +
|
||||
" beschreibung text" +
|
||||
" );" +
|
||||
|
||||
);
|
||||
|
@ -174,7 +174,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_kommentar" +
|
|||
" nutzer bigint NOT NULL REFERENCES nutzer(id)," +
|
||||
" relation text NOT NULL," +
|
||||
" relation_id bigint NOT NULL," +
|
||||
" beschreibung text NOT NULL" +
|
||||
" beschreibung text" +
|
||||
);
|
||||
|
||||
db.run("CREATE UNIQUE INDEX idx_geraet_schluessel ON geraet (schluessel);");
|
||||
|
|
|
@ -10,6 +10,7 @@ const ingredientsRouter = require('./recepieIngredients');
|
|||
const toolsRouter = require('./recepieTools');
|
||||
const durationsRouter = require('./recepieDurations');
|
||||
const stepsRouter = require('./recepieSteps');
|
||||
const categoriesRouter = require('./recepieCategories');
|
||||
|
||||
|
||||
const DEBUG = false;
|
||||
|
@ -18,15 +19,22 @@ const DEBUG = false;
|
|||
|
||||
router.param('recepieId', function(req, res, next, id) {
|
||||
req.recepieId = id;
|
||||
let query = " Select rezept.id, rezept.schluessel, schwierigkeit, schwierigkeit.name as schwierigkeitName, rezept.name, portionen, nutzer, rezept.beschreibung, "+
|
||||
let query = " Select rezept.id, rezept.schluessel, schwierigkeit, schwierigkeit.name as schwierigkeitName, rezept.name, portionen, nutzer, nutzer.name as nutzername, rezept.beschreibung, "+
|
||||
" (SELECT sum(dauer) FROM rezept_dauer WHERE rezept = rezept.id) as overall_duration, "+
|
||||
" (SELECT round(avg(wert),1) FROM rezept_wertung WHERE rezept = rezept.id) as rating "+
|
||||
" FROM rezept JOIN schwierigkeit on schwierigkeit = schwierigkeit.id ";
|
||||
" (SELECT round(avg(wert),1) FROM rezept_wertung WHERE rezept = rezept.id) as rating, "+
|
||||
" array_agg(kategorie.name) as categories, " +
|
||||
" array_agg(kategorie.id) as categorieids" +
|
||||
|
||||
" FROM rezept JOIN schwierigkeit on schwierigkeit = schwierigkeit.id "+
|
||||
" JOIN nutzer on nutzer = nutzer.id" +
|
||||
" LEFT JOIN rezept_kategorie ON rezept.id = rezept" +
|
||||
" LEFT JOIN kategorie on kategorie.id = kategorie ";
|
||||
if(isNaN(req.recepieId)) {
|
||||
query += " WHERE rezept.schluessel ilike '$1'";
|
||||
} else {
|
||||
query += " WHERE rezept.id = $1";
|
||||
}
|
||||
query += " GROUP BY 1,2,3,4,5,6,7,8"
|
||||
|
||||
if(DEBUG) console.log(query);
|
||||
req.db.query(query, [req.recepieId], (err, rs) => {
|
||||
|
@ -42,14 +50,23 @@ router.use('/:recepieId/ingredients/', ingredientsRouter);
|
|||
router.use('/:recepieId/tools/', toolsRouter);
|
||||
router.use('/:recepieId/durations/', durationsRouter);
|
||||
router.use('/:recepieId/steps/', stepsRouter);
|
||||
router.use('/:recepieId/categories/', categoriesRouter);
|
||||
|
||||
|
||||
/* GET recepies listing. */
|
||||
router.get('/', function(req, res, next) {
|
||||
let query = " Select rezept.id, rezept.schluessel, schwierigkeit, schwierigkeit.name as schwierigkeitName, rezept.name, portionen, nutzer, rezept.beschreibung, "+
|
||||
" (SELECT sum(dauer) FROM rezept_dauer WHERE rezept = rezept.id) as overall_duration, "+
|
||||
" (SELECT round(avg(wert),1) FROM rezept_wertung WHERE rezept = rezept.id) as rating "+
|
||||
" FROM rezept JOIN schwierigkeit on schwierigkeit = schwierigkeit.id ";
|
||||
" (SELECT round(avg(wert),1) FROM rezept_wertung WHERE rezept = rezept.id) as rating, "+
|
||||
" array_agg(kategorie.name) as categories," +
|
||||
" array_agg(kategorie.id) as categorieids" +
|
||||
|
||||
" FROM rezept JOIN schwierigkeit on schwierigkeit = schwierigkeit.id "+
|
||||
" LEFT JOIN rezept_kategorie ON rezept.id = rezept" +
|
||||
" LEFT JOIN kategorie on kategorie.id = kategorie ";
|
||||
if(req.query.term) query += " WHERE rezept.name ilike '%"+req.query.term+"%' "
|
||||
query += " GROUP BY 1,2,3,4,5,6,7"
|
||||
|
||||
if(req.query['sort_by']) {
|
||||
if(req.query['sort_by'] === 'creation') query += " ORDER BY rezept.id desc";
|
||||
if(req.query['sort_by'] === 'best_match') query += " ORDER BY rezept.name ";
|
||||
|
@ -171,6 +188,7 @@ router.put('/:recepieId', function(req, res, next) {
|
|||
let query = "UPDATE rezept set name = '"+recepie.name+
|
||||
"', schluessel='"+recepie.schluessel+
|
||||
"', portionen='"+recepie.portionen+
|
||||
"', nutzer='"+recepie.nutzer+
|
||||
"', schwierigkeit='"+recepie.schwierigkeit+
|
||||
"', beschreibung = '"+recepie.beschreibung+"' "+
|
||||
" WHERE id = "+req.recepieId +
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
const express = require('express');
|
||||
const router = express.Router({mergeParams:true});
|
||||
|
||||
const bcrypt = require('bcrypt');
|
||||
const randToken = require('rand-token');
|
||||
|
||||
const DEBUG = false;
|
||||
|
||||
router.param('categorieId', function(req, res, next, id) {
|
||||
req.categorieId = id;
|
||||
let query = " Select rezept_kategorie.id, kategorie, kategorie.name as kategoriename, modifikator, rezept_kategorie.beschreibung "+
|
||||
" FROM rezept_kategorie "+
|
||||
" JOIN kategorie on kategorie = kategorie.id"+
|
||||
" WHERE rezept =$1 AND rezept_kategorie.id = $2";
|
||||
if(DEBUG) console.log(query);
|
||||
req.db.query(query, [req.recepieId, req.categorieId], (err, rs) => {
|
||||
if (err) {
|
||||
return next(err)
|
||||
}
|
||||
req.recepieCategorie = rs.rows[0];
|
||||
next();
|
||||
})
|
||||
});
|
||||
|
||||
/* GET recepieCategories listing. */
|
||||
router.get('/', function(req, res, next) {
|
||||
let query = " Select rezept_kategorie.id, kategorie, kategorie.name as kategoriename, modifikator, rezept_kategorie.beschreibung "+
|
||||
" FROM rezept_kategorie "+
|
||||
" JOIN kategorie on kategorie = kategorie.id"+
|
||||
" WHERE rezept =$1"+
|
||||
" ORDER BY modifikator";
|
||||
if(DEBUG) console.log(query);
|
||||
req.db.query(query,[req.recepieId], (err, rs) => {
|
||||
if (err){
|
||||
next(err);
|
||||
} else {
|
||||
let result = {};
|
||||
result['recepieCategories'] = rs.rows;
|
||||
console.log(result);
|
||||
res.status(200).json(result);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/', function(req, res, next) {
|
||||
let recepieCategorie = req.body.recepieCategories[0];
|
||||
if(!recepieCategorie.kategorie) {
|
||||
return res.status(400).send("Wrong Params")
|
||||
}
|
||||
|
||||
if (!recepieCategorie.modifikator) recepieCategorie.modifikator = 1;
|
||||
let query = "INSERT INTO rezept_kategorie (rezept, kategorie, modifikator, beschreibung) "+
|
||||
" VALUES ($1, $2, $3, $4)" +
|
||||
" returning *";
|
||||
let values = [req.recepieId, recepieCategorie.kategorie, recepieCategorie.modifikator, recepieCategorie.beschreibung];
|
||||
|
||||
if(DEBUG) console.log(query);
|
||||
|
||||
req.db.query(query, values, (err, rs) => {
|
||||
if (err){
|
||||
next(err);
|
||||
} else {
|
||||
let result = {};
|
||||
result['recepieCategories'] = rs.rows[0];
|
||||
res.status(200).json(result);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/* Methods with id */
|
||||
router.get('/:categorieId', function(req, res, next) {
|
||||
res.status(200).json(req.recepieCategorie);
|
||||
});
|
||||
|
||||
router.put('/:categorieId', function(req, res, next) {
|
||||
let recepieCategorie = req.body.recepieCategories[0];
|
||||
let query = "UPDATE rezept_kategorie set kategorie = $1, modifikator =$2, beschreibung =$3"+
|
||||
" WHERE id = "+req.categorieId +
|
||||
" returning *";
|
||||
let values = [recepieCategorie.kategorie, recepieCategorie.modifikator, recepieCategorie.beschreibung];
|
||||
|
||||
if(DEBUG) console.log(query);
|
||||
req.db.query(query, values, (err, rs) => {
|
||||
if (err){
|
||||
next(err);
|
||||
} else {
|
||||
let result = {};
|
||||
result['recepieCategories'] = rs.rows[0];
|
||||
res.status(200).json(result);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
router.delete('/:categorieId', function(req, res, next) {
|
||||
let query = "DELETE FROM rezept_kategorie where id = $1;";
|
||||
req.db.query(query, [req.categorieId], (err, rs) => {
|
||||
if (err) next(err)
|
||||
});
|
||||
res.status(204).send();
|
||||
});
|
||||
|
||||
module.exports = router;
|
Loading…
Reference in New Issue