Compare commits
6 Commits
hogintegra
...
master
Author | SHA1 | Date |
---|---|---|
|
64a78f2941 | |
|
c3661c26aa | |
|
a5f3c46591 | |
|
e9cb3ea0a4 | |
|
0db45ce446 | |
|
07ab3f4816 |
|
@ -1,2 +1 @@
|
||||||
node_modules
|
node_modules
|
||||||
uploads
|
|
||||||
|
|
31
app.js
31
app.js
|
@ -3,6 +3,7 @@ var express = require('express');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
var logger = require('morgan');
|
var logger = require('morgan');
|
||||||
var cors = require('cors');
|
var cors = require('cors');
|
||||||
|
var sassMiddleware = require('node-sass-middleware');
|
||||||
|
|
||||||
var xml = require('xml');
|
var xml = require('xml');
|
||||||
|
|
||||||
|
@ -16,9 +17,8 @@ const dbhog = require('./dbhog')
|
||||||
|
|
||||||
const PORT = process.env.PORT || 4000;
|
const PORT = process.env.PORT || 4000;
|
||||||
|
|
||||||
var userRouter = require('./routes/users');
|
|
||||||
|
|
||||||
var indexRouter = require('./routes/index');
|
var indexRouter = require('./routes/index');
|
||||||
|
var usersRouter = require('./routes/users');
|
||||||
var valuelistRouter = require('./routes/valuelist');
|
var valuelistRouter = require('./routes/valuelist');
|
||||||
var recepieRouter = require('./routes/recepie');
|
var recepieRouter = require('./routes/recepie');
|
||||||
var personRouter = require('./routes/v1/person');
|
var personRouter = require('./routes/v1/person');
|
||||||
|
@ -39,26 +39,44 @@ var corsOptions = {
|
||||||
methods: ['GET', 'PUT', 'POST', 'DELETE', 'COPY']
|
methods: ['GET', 'PUT', 'POST', 'DELETE', 'COPY']
|
||||||
}
|
}
|
||||||
app.use(cors(corsOptions));
|
app.use(cors(corsOptions));
|
||||||
|
|
||||||
|
// Setting up passport
|
||||||
|
|
||||||
|
/*passport.use(
|
||||||
|
new LocalStrategy(
|
||||||
|
function(username, password, done) {
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
|
||||||
app.use(logger('dev'));
|
app.use(logger('dev'));
|
||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
app.use(express.urlencoded({ extended: false }));
|
app.use(express.urlencoded({ extended: false }));
|
||||||
|
app.use(sassMiddleware({
|
||||||
|
src: path.join(__dirname, 'public'),
|
||||||
|
dest: path.join(__dirname, 'public'),
|
||||||
|
indentedSyntax: true, // true = .sass and false = .scss
|
||||||
|
sourceMap: true
|
||||||
|
}));
|
||||||
app.use(express.static(path.join(__dirname, 'public')));
|
app.use(express.static(path.join(__dirname, 'public')));
|
||||||
|
|
||||||
app.use('/', (req, res, next ) => {
|
app.use('/', (req, res, next ) => {
|
||||||
req.db = db;
|
req.db = db;
|
||||||
next();
|
next();
|
||||||
});
|
})
|
||||||
|
|
||||||
app.use('/api/v1', (req, res, next ) => {
|
app.use('/api/v1', (req, res, next ) => {
|
||||||
req.db = dbhog;
|
req.db = dbhog;
|
||||||
next();
|
next();
|
||||||
});
|
})
|
||||||
|
|
||||||
app.use('/', indexRouter);
|
app.use('/', indexRouter);
|
||||||
|
app.use('/users', usersRouter);
|
||||||
app.use('/wl', valuelistRouter);
|
app.use('/wl', valuelistRouter);
|
||||||
app.use('/vl', valuelistRouter);
|
|
||||||
app.use('/recepies', recepieRouter);
|
app.use('/recepies', recepieRouter);
|
||||||
app.use('/users', userRouter);
|
|
||||||
|
|
||||||
app.use('/api/v1/person', personRouter);
|
app.use('/api/v1/person', personRouter);
|
||||||
app.use('/api/v1/schueler', schuelerRouter);
|
app.use('/api/v1/schueler', schuelerRouter);
|
||||||
|
@ -67,7 +85,6 @@ app.use('/api/v1/punkte', punkteRouter);
|
||||||
app.use('/api/v1/haus', hausRouter);
|
app.use('/api/v1/haus', hausRouter);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// catch 404 and forward to error handler
|
// catch 404 and forward to error handler
|
||||||
app.use(function(req, res, next) {
|
app.use(function(req, res, next) {
|
||||||
next(createError(404));
|
next(createError(404));
|
||||||
|
|
66
db/index.js
66
db/index.js
|
@ -18,7 +18,7 @@ const query = function (text, params, callback) {
|
||||||
return pool.query(text, params, (err, res) => {
|
return pool.query(text, params, (err, res) => {
|
||||||
const duration = Date.now() - start;
|
const duration = Date.now() - start;
|
||||||
//if(res)
|
//if(res)
|
||||||
if(DEBUG) console.log('executed query', { text, duration})
|
console.log('executed query', { text, duration})
|
||||||
callback(err, res)
|
callback(err, res)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -32,38 +32,32 @@ const dataStructure = {
|
||||||
|
|
||||||
categories: {
|
categories: {
|
||||||
tableName: "kategorie",
|
tableName: "kategorie",
|
||||||
jsonName: "categories",
|
jsonName: "categories"
|
||||||
displayName: "Kategorien"
|
|
||||||
},
|
},
|
||||||
|
|
||||||
units: {
|
units: {
|
||||||
tableName: "einheit",
|
tableName: "einheit",
|
||||||
jsonName: "units",
|
jsonName: "units"
|
||||||
displayName: "Einheiten"
|
|
||||||
},
|
},
|
||||||
|
|
||||||
tools: {
|
tools: {
|
||||||
tableName: "geraet",
|
tableName: "geraet",
|
||||||
jsonName: "tools",
|
jsonName: "tools"
|
||||||
displayName: "Geräte und Sonstiges"
|
|
||||||
},
|
},
|
||||||
|
|
||||||
difficulties: {
|
difficulties: {
|
||||||
tableName: "schwierigkeit",
|
tableName: "schwierigkeit",
|
||||||
jsonName: "difficulties",
|
jsonName: "difficulties"
|
||||||
displayName: "Schwierigkeit"
|
|
||||||
},
|
},
|
||||||
|
|
||||||
ingredients: {
|
ingredients: {
|
||||||
tableName: "zutat",
|
tableName: "zutat",
|
||||||
jsonName: "ingredients",
|
jsonName: "ingredients"
|
||||||
displayName: "Zutaten"
|
|
||||||
},
|
},
|
||||||
|
|
||||||
ratingcategories: {
|
ratingcategories: {
|
||||||
tableName: "wertungkategorie",
|
tableName: "wertungkategorie",
|
||||||
jsonName: "ratingcategories",
|
jsonName: "ratingcategories"
|
||||||
displayName: "Wertungskategorien"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -105,14 +99,7 @@ const updateNameKeyObject = function(req, res, next) {
|
||||||
if(DEBUG) console.log("Update Valuelist");
|
if(DEBUG) console.log("Update Valuelist");
|
||||||
let structure = getStructure(req);
|
let structure = getStructure(req);
|
||||||
if(DEBUG) console.log(req.body[structure.jsonName]);
|
if(DEBUG) console.log(req.body[structure.jsonName]);
|
||||||
let obj = req.body['item'];
|
let obj = req.body[structure.jsonName][0];
|
||||||
if(req.body[structure.jsonName]) {
|
|
||||||
obj = req.body[structure.jsonName][0];
|
|
||||||
}
|
|
||||||
if(!obj.beschreibung) {
|
|
||||||
obj.beschreibung = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
let query = "UPDATE "+structure.tableName+
|
let query = "UPDATE "+structure.tableName+
|
||||||
" set schluessel = '"+obj.schluessel+
|
" set schluessel = '"+obj.schluessel+
|
||||||
"', name = '"+obj.name+
|
"', name = '"+obj.name+
|
||||||
|
@ -147,7 +134,7 @@ const insertNameKeyObject = function(req, res, next) {
|
||||||
} else {
|
} else {
|
||||||
let result = {};
|
let result = {};
|
||||||
result[structure['jsonName']] = rs.rows;
|
result[structure['jsonName']] = rs.rows;
|
||||||
if(DEBUG) console.log(result);
|
console.log(result);
|
||||||
res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -161,15 +148,6 @@ const getStructure = function(req) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const getDataStructure = function(req, res, next) {
|
|
||||||
let structure = dataStructure;
|
|
||||||
res.status(200).json(structure);
|
|
||||||
return structure;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const getAllFromTable = function(req, res, next) {
|
const getAllFromTable = function(req, res, next) {
|
||||||
|
|
||||||
let structure = getStructure(req);
|
let structure = getStructure(req);
|
||||||
|
@ -190,28 +168,6 @@ const getAllFromTable = function(req, res, next) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const getItemFromTable = function(req, res, next) {
|
|
||||||
|
|
||||||
let structure = getStructure(req);
|
|
||||||
if(DEBUG) {
|
|
||||||
console.log("Found Structure-Object for WL-Item: ");
|
|
||||||
console.log(structure);
|
|
||||||
console.log(structure['tableName']);
|
|
||||||
}
|
|
||||||
if(structure === undefined) return res.status(404).send();
|
|
||||||
pool.query(selectItemFromTable(structure['tableName'], req.itemId), (err, rs) => {
|
|
||||||
if(err) next(err)
|
|
||||||
else {
|
|
||||||
if(DEBUG) console.log(res);
|
|
||||||
let result = {};
|
|
||||||
result = rs.rows[0];
|
|
||||||
console.log(result);
|
|
||||||
res.status(200).json(result);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const getUserByEmail = function(username) {
|
const getUserByEmail = function(username) {
|
||||||
let query = "Select id, name, email, kennwort, beschreibung FROM nutzer WHERE email ilike '"+username+"'";
|
let query = "Select id, name, email, kennwort, beschreibung FROM nutzer WHERE email ilike '"+username+"'";
|
||||||
if(DEBUG) console.log(query);
|
if(DEBUG) console.log(query);
|
||||||
|
@ -233,8 +189,6 @@ module.exports = {
|
||||||
insertNameKeyObject,
|
insertNameKeyObject,
|
||||||
deleteNameKeyObject,
|
deleteNameKeyObject,
|
||||||
getAllFromTable,
|
getAllFromTable,
|
||||||
getItemFromTable,
|
|
||||||
getUserByEmail,
|
getUserByEmail,
|
||||||
getStructure,
|
getStructure
|
||||||
getDataStructure
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,116 @@
|
||||||
|
|
||||||
|
const express = require('express');
|
||||||
|
const router = express.Router();
|
||||||
|
const pg = require('pg');
|
||||||
|
const path = require('path');
|
||||||
|
const { Pool } = require('pg');
|
||||||
|
const pool = new Pool({
|
||||||
|
user: 'postgres',
|
||||||
|
host: 'localhost',
|
||||||
|
database: 'hogwarts',
|
||||||
|
password: 'postgres',
|
||||||
|
port: 5432
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
pool.on('error', (err, client) => {
|
||||||
|
console.error('Unexpected error on idle client', err)
|
||||||
|
process.exit(-1)
|
||||||
|
});
|
||||||
|
|
||||||
|
router.use(function(req, res, next) {
|
||||||
|
res.header("Access-Control-Allow-Origin", "*");
|
||||||
|
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
|
||||||
|
/* GET home page. */
|
||||||
|
router.get('/', function(req, res, next) {
|
||||||
|
res.render('index', { title: 'Express' });
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
router.get('/api/v1/person', function(req, res, next) {
|
||||||
|
const results = [];
|
||||||
|
pool.connect((err, client, done) => {
|
||||||
|
if (err) throw err
|
||||||
|
client.query('SELECT * FROM v_person ORDER BY name ASC;', (err, rs) => {
|
||||||
|
|
||||||
|
for(var i= 0; i<rs.rows.length; i++) {
|
||||||
|
results.push(rs.rows[i]);
|
||||||
|
}
|
||||||
|
console.log(err, rs);
|
||||||
|
done();
|
||||||
|
return res.json(results);
|
||||||
|
|
||||||
|
});
|
||||||
|
//done();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
router.get('/api/v1/person/:person_id', function(req, res, next) {
|
||||||
|
const results = [];
|
||||||
|
const id = req.params.person_id;
|
||||||
|
|
||||||
|
pool.connect((err, client, done) => {
|
||||||
|
if (err) throw err
|
||||||
|
client.query('SELECT * FROM v_person WHERE id = $1;',[id], (err, rs) => {
|
||||||
|
|
||||||
|
for(var i= 0; i<rs.rows.length; i++) {
|
||||||
|
results.push(rs.rows[i]);
|
||||||
|
}
|
||||||
|
console.log(err, rs);
|
||||||
|
done();
|
||||||
|
return res.json(results);
|
||||||
|
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
router.get('/api/v1/schuljahr', function(req, res, next) {
|
||||||
|
const results = [];
|
||||||
|
pool.connect((err, client, done) => {
|
||||||
|
if (err) throw err
|
||||||
|
client.query('SELECT * FROM schuljahr ORDER BY von ASC;', (err, rs) => {
|
||||||
|
|
||||||
|
for(var i= 0; i<rs.rows.length; i++) {
|
||||||
|
results.push(rs.rows[i]);
|
||||||
|
}
|
||||||
|
console.log(err, rs);
|
||||||
|
done();
|
||||||
|
return res.json(results);
|
||||||
|
|
||||||
|
});
|
||||||
|
//done();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
router.get('/api/v1/punkte/:schuljahr', function(req, res, next) {
|
||||||
|
const results = [];
|
||||||
|
const id = req.params.schuljahr;
|
||||||
|
const group = req.query.group;
|
||||||
|
|
||||||
|
var queryString = 'SELECT * FROM v_hauspunkte_small WHERE schuljahr = $1;';
|
||||||
|
|
||||||
|
if(group==1) queryString = 'SELECT schuljahr, haus, sum(punkte) FROM v_hauspunkte WHERE schuljahr = $1 GROUP BY schuljahr, haus;'
|
||||||
|
|
||||||
|
pool.connect((err, client, done) => {
|
||||||
|
if (err) throw err
|
||||||
|
client.query(queryString,[id], (err, rs) => {
|
||||||
|
|
||||||
|
for(var i= 0; i<rs.rows.length; i++) {
|
||||||
|
results.push(rs.rows[i]);
|
||||||
|
}
|
||||||
|
console.log(err, rs);
|
||||||
|
done();
|
||||||
|
return res.json(results);
|
||||||
|
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = router;
|
53
migration.js
53
migration.js
|
@ -7,7 +7,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS zutat" +
|
||||||
" schluessel text NOT NULL," +
|
" schluessel text NOT NULL," +
|
||||||
" name text NOT NULL," +
|
" name text NOT NULL," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS einheit" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS einheit" +
|
||||||
|
@ -16,7 +16,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS einheit" +
|
||||||
" schluessel text NOT NULL," +
|
" schluessel text NOT NULL," +
|
||||||
" name text NOT NULL," +
|
" name text NOT NULL," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS geraet" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS geraet" +
|
||||||
|
@ -25,7 +25,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS geraet" +
|
||||||
" schluessel text NOT NULL," +
|
" schluessel text NOT NULL," +
|
||||||
" name text NOT NULL," +
|
" name text NOT NULL," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS kategorie" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS kategorie" +
|
||||||
|
@ -34,7 +34,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS kategorie" +
|
||||||
" schluessel text NOT NULL," +
|
" schluessel text NOT NULL," +
|
||||||
" name text NOT NULL," +
|
" name text NOT NULL," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS wertungkategorie" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS wertungkategorie" +
|
||||||
|
@ -43,7 +43,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS wertungkategorie" +
|
||||||
" schluessel text NOT NULL," +
|
" schluessel text NOT NULL," +
|
||||||
" name text NOT NULL," +
|
" name text NOT NULL," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS schwierigkeit" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS schwierigkeit" +
|
||||||
|
@ -52,7 +52,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS schwierigkeit" +
|
||||||
" schluessel text NOT NULL," +
|
" schluessel text NOT NULL," +
|
||||||
" name text NOT NULL," +
|
" name text NOT NULL," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS rezept" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS rezept" +
|
||||||
|
@ -64,7 +64,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS rezept" +
|
||||||
" portionen NUMERIC NOT NULL DEFAULT 4.0," +
|
" portionen NUMERIC NOT NULL DEFAULT 4.0," +
|
||||||
" nutzer bigint NOT NULL REFERENCES nutzer(id)," +
|
" nutzer bigint NOT NULL REFERENCES nutzer(id)," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_dauer" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_dauer" +
|
||||||
|
@ -75,7 +75,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS rezept_dauer" +
|
||||||
" name text NOT NULL," +
|
" name text NOT NULL," +
|
||||||
" sort INT NOT NULL DEFAULT 0," +
|
" sort INT NOT NULL DEFAULT 0," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_zutat" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_zutat" +
|
||||||
|
@ -86,7 +86,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS rezept_zutat" +
|
||||||
" zutat bigint NOT NULL REFERENCES zutat(id)," +
|
" zutat bigint NOT NULL REFERENCES zutat(id)," +
|
||||||
" menge NUMERIC," +
|
" menge NUMERIC," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_geraet" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_geraet" +
|
||||||
|
@ -97,7 +97,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS rezept_geraet" +
|
||||||
" geraet bigint NOT NULL REFERENCES geraet(id)," +
|
" geraet bigint NOT NULL REFERENCES geraet(id)," +
|
||||||
" menge NUMERIC," +
|
" menge NUMERIC," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_schritt" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_schritt" +
|
||||||
|
@ -107,7 +107,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS rezept_schritt" +
|
||||||
" sort INT NOT NULL DEFAULT 0," +
|
" sort INT NOT NULL DEFAULT 0," +
|
||||||
" name text NOT NULL," +
|
" name text NOT NULL," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_kategorie" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_kategorie" +
|
||||||
|
@ -117,7 +117,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS rezept_kategorie" +
|
||||||
" kategorie bigint NOT NULL REFERENCES kategorie(id)," +
|
" kategorie bigint NOT NULL REFERENCES kategorie(id)," +
|
||||||
" modifikator NUMERIC NOT NULL DEFAULT 1," +
|
" modifikator NUMERIC NOT NULL DEFAULT 1," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS nutzer" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS nutzer" +
|
||||||
|
@ -127,7 +127,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS nutzer" +
|
||||||
" email text NOT NULL," +
|
" email text NOT NULL," +
|
||||||
" kennwort text NOT NULL," +
|
" kennwort text NOT NULL," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS rolle" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS rolle" +
|
||||||
|
@ -136,7 +136,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS rolle" +
|
||||||
" schluessel text NOT NULL," +
|
" schluessel text NOT NULL," +
|
||||||
" name text NOT NULL," +
|
" name text NOT NULL," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_rolle" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_rolle" +
|
||||||
|
@ -145,7 +145,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_rolle" +
|
||||||
" nutzer bigint NOT NULL REFERENCES nutzer(id)," +
|
" nutzer bigint NOT NULL REFERENCES nutzer(id)," +
|
||||||
" rolle bigint NOT NULL REFERENCES rolle(id)," +
|
" rolle bigint NOT NULL REFERENCES rolle(id)," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_favorit" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_favorit" +
|
||||||
|
@ -154,7 +154,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_favorit" +
|
||||||
" nutzer bigint NOT NULL REFERENCES nutzer(id)," +
|
" nutzer bigint NOT NULL REFERENCES nutzer(id)," +
|
||||||
" rezept bigint NOT NULL REFERENCES rezept(id)," +
|
" rezept bigint NOT NULL REFERENCES rezept(id)," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_wertung" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_wertung" +
|
||||||
|
@ -165,7 +165,7 @@ db.run("CREATE TABLE" +" IF NOT EXISTS rezept_wertung" +
|
||||||
" wertungkategorie bigint NOT NULL REFERENCES wertungkategorie(id)," +
|
" wertungkategorie bigint NOT NULL REFERENCES wertungkategorie(id)," +
|
||||||
" wert INTEGER NOT NULL DEFAULT 5," +
|
" wert INTEGER NOT NULL DEFAULT 5," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
" );" +
|
||||||
|
|
||||||
);
|
);
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_kommentar" +
|
db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_kommentar" +
|
||||||
|
@ -175,26 +175,17 @@ db.run("CREATE TABLE" +" IF NOT EXISTS nutzer_kommentar" +
|
||||||
" relation text NOT NULL," +
|
" relation text NOT NULL," +
|
||||||
" relation_id bigint NOT NULL," +
|
" relation_id bigint NOT NULL," +
|
||||||
" beschreibung text" +
|
" beschreibung text" +
|
||||||
" );"
|
|
||||||
);
|
);
|
||||||
|
|
||||||
db.run("CREATE TABLE" +" IF NOT EXISTS rezept_image" +
|
|
||||||
" (" +
|
|
||||||
" id bigserial PRIMARY KEY," +
|
|
||||||
" rezept bigint NOT NULL REFERENCES rezept(id)," +
|
|
||||||
" pfad text NOT NULL," +
|
|
||||||
" dateiname text NOT NULL," +
|
|
||||||
" lizenz text NOT NULL," +
|
|
||||||
" uploadtime timestamp NOT NULL default current_timestamp," +
|
|
||||||
" beschreibung text" +
|
|
||||||
" );"
|
|
||||||
);
|
|
||||||
|
|
||||||
db.run("CREATE UNIQUE INDEX idx_geraet_schluessel ON geraet (schluessel);");
|
db.run("CREATE UNIQUE INDEX idx_geraet_schluessel ON geraet (schluessel);");
|
||||||
db.run("CREATE UNIQUE INDEX idx_einheit_schluessel ON einheit (schluessel);");
|
db.run("CREATE UNIQUE INDEX idx_einheit_schluessel ON einheit (schluessel);");
|
||||||
db.run("CREATE UNIQUE INDEX idx_kategorie_schluessel ON kategorie (schluessel);");
|
db.run("CREATE UNIQUE INDEX idx_kategorie_schluessel ON kategorie (schluessel);");
|
||||||
db.run("CREATE UNIQUE INDEX idx_schwierigket_schluessel ON schwierigkeit (schluessel);");
|
db.run("CREATE UNIQUE INDEX idx_schwierigket_schluessel ON schwierigkeit (schluessel);");
|
||||||
db.run("CREATE UNIQUE INDEX idx_zutat_schluessel ON zutat (schluessel);");
|
db.run("CREATE UNIQUE INDEX idx_zutat_schluessel ON zutat (schluessel);");
|
||||||
|
db.run("CREATE UNIQUE INDEX idx_rezept_schluessel ON rezept (schluessel);");
|
||||||
db.run("CREATE UNIQUE INDEX idx_nutzer_email ON nutzer (email);");
|
db.run("CREATE UNIQUE INDEX idx_nutzer_email ON nutzer (email);");
|
||||||
db.run("CREATE UNIQUE INDEX idx_wertungkategorie_email ON wertungkategorie (schluessel);");
|
db.run("CREATE UNIQUE INDEX idx_wertungkategorie_email ON wertungkategorie (schluessel);")"
|
||||||
|
|
||||||
|
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
10
package.json
10
package.json
|
@ -4,7 +4,11 @@
|
||||||
"description": "Cookbook app for Families to share their recipies",
|
"description": "Cookbook app for Families to share their recipies",
|
||||||
"main": "app.js",
|
"main": "app.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"start": "node ./bin/www"
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"bcrypt": "^3.0.3",
|
||||||
"body-parser": "^1.18.3",
|
"body-parser": "^1.18.3",
|
||||||
"connect-pg-simple": "^5.0.0",
|
"connect-pg-simple": "^5.0.0",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
|
@ -13,10 +17,14 @@
|
||||||
"express-session": "^1.15.6",
|
"express-session": "^1.15.6",
|
||||||
"http-errors": "~1.6.2",
|
"http-errors": "~1.6.2",
|
||||||
"morgan": "~1.9.0",
|
"morgan": "~1.9.0",
|
||||||
"multer": "^1.4.2",
|
"node-sass-middleware": "0.11.0",
|
||||||
|
"passport-local": "^1.0.0",
|
||||||
"pg": "^7.7.1",
|
"pg": "^7.7.1",
|
||||||
"pug": "2.0.0-beta11",
|
"pug": "2.0.0-beta11",
|
||||||
"rand-token": "^0.4.0",
|
"rand-token": "^0.4.0",
|
||||||
|
"react": "^16.7.0",
|
||||||
|
"react-dom": "^15.6.1",
|
||||||
|
"react-router-dom": "^4.2.2",
|
||||||
"whatwg-fetch": "^3.0.0",
|
"whatwg-fetch": "^3.0.0",
|
||||||
"xml": "^1.0.1"
|
"xml": "^1.0.1"
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
body {
|
||||||
|
padding: 50px;
|
||||||
|
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; }
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #00B7FF; }
|
||||||
|
|
||||||
|
/*# sourceMappingURL=style.css.map */
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"file": "style.css",
|
||||||
|
"sources": [
|
||||||
|
"style.sass"
|
||||||
|
],
|
||||||
|
"names": [],
|
||||||
|
"mappings": "AAAA,AAAA,IAAI,CAAC;EACH,OAAO,EAAE,IAAI;EACb,IAAI,EAAE,kDAAkD,GAAG;;AAE7D,AAAA,CAAC,CAAC;EACA,KAAK,EAAE,OAAO,GAAG"
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
body
|
||||||
|
padding: 50px
|
||||||
|
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif
|
||||||
|
|
||||||
|
a
|
||||||
|
color: #00B7FF
|
|
@ -3,7 +3,7 @@ const router = express.Router();
|
||||||
var cors = require('cors');
|
var cors = require('cors');
|
||||||
|
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
const randToken = require('rand-token');
|
const randToken = require('rand-token');
|
||||||
|
|
||||||
const ingredientsRouter = require('./recepieIngredients');
|
const ingredientsRouter = require('./recepieIngredients');
|
||||||
|
@ -11,10 +11,9 @@ const toolsRouter = require('./recepieTools');
|
||||||
const durationsRouter = require('./recepieDurations');
|
const durationsRouter = require('./recepieDurations');
|
||||||
const stepsRouter = require('./recepieSteps');
|
const stepsRouter = require('./recepieSteps');
|
||||||
const categoriesRouter = require('./recepieCategories');
|
const categoriesRouter = require('./recepieCategories');
|
||||||
const voteRouter = require('./recepieVote');
|
|
||||||
|
|
||||||
|
|
||||||
const DEBUG = true;
|
const DEBUG = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,11 +51,9 @@ router.use('/:recepieId/tools/', toolsRouter);
|
||||||
router.use('/:recepieId/durations/', durationsRouter);
|
router.use('/:recepieId/durations/', durationsRouter);
|
||||||
router.use('/:recepieId/steps/', stepsRouter);
|
router.use('/:recepieId/steps/', stepsRouter);
|
||||||
router.use('/:recepieId/categories/', categoriesRouter);
|
router.use('/:recepieId/categories/', categoriesRouter);
|
||||||
router.use('/:recepieId/votes/', voteRouter);
|
|
||||||
|
|
||||||
|
|
||||||
/* GET recepies listing. */
|
/* GET recepies listing. */
|
||||||
/* Gesucht wird in Rezept, Zutaten und Beschreibung */
|
|
||||||
router.get('/', function(req, res, next) {
|
router.get('/', function(req, res, next) {
|
||||||
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, rezept.beschreibung, "+
|
||||||
" (SELECT sum(dauer) FROM rezept_dauer WHERE rezept = rezept.id) as overall_duration, "+
|
" (SELECT sum(dauer) FROM rezept_dauer WHERE rezept = rezept.id) as overall_duration, "+
|
||||||
|
@ -66,15 +63,9 @@ router.get('/', function(req, res, next) {
|
||||||
|
|
||||||
" FROM rezept JOIN schwierigkeit on schwierigkeit = schwierigkeit.id "+
|
" FROM rezept JOIN schwierigkeit on schwierigkeit = schwierigkeit.id "+
|
||||||
" LEFT JOIN rezept_kategorie ON rezept.id = rezept" +
|
" LEFT JOIN rezept_kategorie ON rezept.id = rezept" +
|
||||||
" LEFT JOIN kategorie on kategorie.id = kategorie "+
|
" LEFT JOIN kategorie on kategorie.id = kategorie ";
|
||||||
" WHERE 1 = 1 ";
|
if(req.query.term) query += " WHERE rezept.name ilike '%"+req.query.term+"%' "
|
||||||
if(req.query.term) query += " AND rezept.name ilike '%"+req.query.term+
|
if(req.query.hashtag) query += " WHERE rezept.schluessel ilike '"+req.query.hashtag+"' "
|
||||||
"%' OR rezept.beschreibung ilike '%"+req.query.term+"%' "+
|
|
||||||
" OR rezept.id in (select rezept from rezept_zutat where zutat in (select id from zutat where name ilike '%"+req.query.term+"%'))";
|
|
||||||
if(req.query.hashtag) query += " AND rezept.schluessel ilike '"+req.query.hashtag+"' "
|
|
||||||
if(req.query.cat) query += " AND kategorie.id IN ("+req.query.cat+")"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
query += " GROUP BY 1,2,3,4,5,6,7"
|
query += " GROUP BY 1,2,3,4,5,6,7"
|
||||||
|
|
||||||
|
@ -82,27 +73,20 @@ router.get('/', function(req, res, next) {
|
||||||
if(req.query['sort_by'] === 'creation') query += " ORDER BY rezept.id desc";
|
if(req.query['sort_by'] === 'creation') query += " ORDER BY rezept.id desc";
|
||||||
if(req.query['sort_by'] === 'best_match') query += " ORDER BY rezept.name ";
|
if(req.query['sort_by'] === 'best_match') query += " ORDER BY rezept.name ";
|
||||||
if(req.query['sort_by'] === 'rating') query += " ORDER BY rating ";
|
if(req.query['sort_by'] === 'rating') query += " ORDER BY rating ";
|
||||||
} else if (req.query.limit) {
|
|
||||||
query += " ORDER BY random() LIMIT "+req.query.limit+" "
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
query += " ORDER BY rezept.name "
|
query += " ORDER BY rezept.name "
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(DEBUG) console.log(query);
|
if(DEBUG) console.log(query);
|
||||||
if(DEBUG) console.log("DB", req.db);
|
|
||||||
req.db.query(query, (err, rs) => {
|
req.db.query(query, (err, rs) => {
|
||||||
console.log("Returned from DB Query");
|
|
||||||
console.log(rs);
|
|
||||||
if (err){
|
if (err){
|
||||||
console.log(query);
|
console.log(query);
|
||||||
next(err);
|
next(err);
|
||||||
} else {
|
} else {
|
||||||
let result = {};
|
let result = {};
|
||||||
if (DEBUG) console.log("RESULT", rs.rows);
|
|
||||||
result['recepies'] = rs.rows;
|
result['recepies'] = rs.rows;
|
||||||
if (DEBUG) console.log(result);
|
console.log(result);
|
||||||
res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -136,11 +120,9 @@ router.post('/', function(req, res, next) {
|
||||||
"INSERT into rezept_schritt (rezept, sort, name, beschreibung) VALUES ($1, 1, 'Zubereitung', 'Mit Sherry ablöschen, Sahne hinzugeben und Parmesan reiben.')"
|
"INSERT into rezept_schritt (rezept, sort, name, beschreibung) VALUES ($1, 1, 'Zubereitung', 'Mit Sherry ablöschen, Sahne hinzugeben und Parmesan reiben.')"
|
||||||
];
|
];
|
||||||
|
|
||||||
if (DEBUG) {
|
console.log(querys[0],rs.rows[0].id);
|
||||||
console.log(querys[0],rs.rows[0].id);
|
console.log(querys[1],[rs.rows[0].nutzer, rs.rows[0].id]);
|
||||||
console.log(querys[1],[rs.rows[0].nutzer, rs.rows[0].id]);
|
console.log(querys[2],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[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[1], [rs.rows[0].nutzer, rs.rows[0].id], (err, rs) => {});
|
||||||
|
@ -188,12 +170,12 @@ router.copy('/:recepieId', cors(), function(req, res, next) {
|
||||||
"INSERT into rezept_geraet (rezept, geraet, einheit, menge, beschreibung) SELECT $2, geraet, einheit, menge, beschreibung FROM rezept_geraet 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"
|
"INSERT into rezept_schritt (rezept, sort, name, beschreibung) SELECT $2, sort, name, beschreibung FROM rezept_schritt where rezept = $1"
|
||||||
];
|
];
|
||||||
if (DEBUG) {
|
|
||||||
console.log(querys[0],recepie.id);
|
console.log(querys[0],recepie.id);
|
||||||
console.log(querys[1],recepie.id);
|
console.log(querys[1],recepie.id);
|
||||||
console.log(querys[2],recepie.id);
|
console.log(querys[2],recepie.id);
|
||||||
console.log(querys[3],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[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[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[2], [recepie.id, rs.rows[0].id], (err, rs) => {});
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router({mergeParams:true});
|
const router = express.Router({mergeParams:true});
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
const randToken = require('rand-token');
|
const randToken = require('rand-token');
|
||||||
|
|
||||||
const DEBUG = false;
|
const DEBUG = false;
|
||||||
|
@ -36,7 +36,7 @@ router.get('/', function(req, res, next) {
|
||||||
} else {
|
} else {
|
||||||
let result = {};
|
let result = {};
|
||||||
result['recepieCategories'] = rs.rows;
|
result['recepieCategories'] = rs.rows;
|
||||||
if (DEBUG) console.log(result);
|
console.log(result);
|
||||||
res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router({mergeParams:true});
|
const router = express.Router({mergeParams:true});
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
const randToken = require('rand-token');
|
const randToken = require('rand-token');
|
||||||
|
|
||||||
const DEBUG = false;
|
const DEBUG = false;
|
||||||
|
@ -33,7 +33,7 @@ router.get('/', function(req, res, next) {
|
||||||
} else {
|
} else {
|
||||||
let result = {};
|
let result = {};
|
||||||
result['recepieDurations'] = rs.rows;
|
result['recepieDurations'] = rs.rows;
|
||||||
if (DEBUG) console.log(result);
|
console.log(result);
|
||||||
res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,125 +0,0 @@
|
||||||
const express = require('express');
|
|
||||||
const router = express.Router({mergeParams:true});
|
|
||||||
const multer = require('multer');
|
|
||||||
const storage = multer.diskStorage({
|
|
||||||
destination: function(req, file, cb) {
|
|
||||||
cb(null, './uploads/');
|
|
||||||
},
|
|
||||||
filename: function(req, file, cb) {
|
|
||||||
cb(null, file.filename);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
const fileFilter = (req, file, cb) => {
|
|
||||||
if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') {
|
|
||||||
cb(null, true);
|
|
||||||
} else {
|
|
||||||
cb(null, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const upload = multer({
|
|
||||||
storage:storage,
|
|
||||||
limits: {
|
|
||||||
fileSize: 1024 * 1024 * 2
|
|
||||||
},
|
|
||||||
fileFilter:fileFilter
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
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;
|
|
||||||
if (DEBUG) 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;
|
|
|
@ -1,7 +1,7 @@
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router({mergeParams:true});
|
const router = express.Router({mergeParams:true});
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
const randToken = require('rand-token');
|
const randToken = require('rand-token');
|
||||||
|
|
||||||
const DEBUG = false;
|
const DEBUG = false;
|
||||||
|
@ -40,7 +40,7 @@ router.get('/', function(req, res, next) {
|
||||||
} else {
|
} else {
|
||||||
let result = {};
|
let result = {};
|
||||||
result['recepieIngredients'] = rs.rows;
|
result['recepieIngredients'] = rs.rows;
|
||||||
if (DEBUG) console.log(result);
|
console.log(result);
|
||||||
res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -79,19 +79,10 @@ router.get('/:ingredientId', function(req, res, next) {
|
||||||
|
|
||||||
router.put('/:ingredientId', function(req, res, next) {
|
router.put('/:ingredientId', function(req, res, next) {
|
||||||
let recepieIngredient = req.body.recepieIngredients[0];
|
let recepieIngredient = req.body.recepieIngredients[0];
|
||||||
//console.log(recepieIngredient.menge>0);
|
|
||||||
let menge = null;
|
|
||||||
if (recepieIngredient.menge>0) {
|
|
||||||
menge = recepieIngredient.menge;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
menge = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
let query = "UPDATE rezept_zutat set menge = $1, einheit = $2, zutat =$3, beschreibung =$4"+
|
let query = "UPDATE rezept_zutat set menge = $1, einheit = $2, zutat =$3, beschreibung =$4"+
|
||||||
" WHERE id = "+req.ingredientId +
|
" WHERE id = "+req.ingredientId +
|
||||||
" returning *";
|
" returning *";
|
||||||
let values = [menge, recepieIngredient.einheit, recepieIngredient.zutat, recepieIngredient.beschreibung];
|
let values = [recepieIngredient.menge, recepieIngredient.einheit, recepieIngredient.zutat, recepieIngredient.beschreibung];
|
||||||
|
|
||||||
if(DEBUG) console.log(query);
|
if(DEBUG) console.log(query);
|
||||||
req.db.query(query, values, (err, rs) => {
|
req.db.query(query, values, (err, rs) => {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router({mergeParams:true});
|
const router = express.Router({mergeParams:true});
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
const randToken = require('rand-token');
|
const randToken = require('rand-token');
|
||||||
|
|
||||||
const DEBUG = false;
|
const DEBUG = false;
|
||||||
|
@ -34,7 +34,7 @@ router.get('/', function(req, res, next) {
|
||||||
} else {
|
} else {
|
||||||
let result = {};
|
let result = {};
|
||||||
result['recepieSteps'] = rs.rows;
|
result['recepieSteps'] = rs.rows;
|
||||||
if (DEBUG) console.log(result);
|
console.log(result);
|
||||||
res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router({mergeParams:true});
|
const router = express.Router({mergeParams:true});
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
const randToken = require('rand-token');
|
const randToken = require('rand-token');
|
||||||
|
|
||||||
const DEBUG = false;
|
const DEBUG = false;
|
||||||
|
@ -39,7 +39,7 @@ router.get('/', function(req, res, next) {
|
||||||
} else {
|
} else {
|
||||||
let result = {};
|
let result = {};
|
||||||
result['recepieTools'] = rs.rows;
|
result['recepieTools'] = rs.rows;
|
||||||
if(DEBUG) console.log(result);
|
console.log(result);
|
||||||
res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
const express = require('express');
|
|
||||||
const router = express.Router({mergeParams:true});
|
|
||||||
|
|
||||||
|
|
||||||
const randToken = require('rand-token');
|
|
||||||
|
|
||||||
const DEBUG = true;
|
|
||||||
|
|
||||||
|
|
||||||
/* GET recepieVotes listing. */
|
|
||||||
router.get('/', function(req, res, next) {
|
|
||||||
let query = "SELECT avg(wert) as wertung FROM rezept_wertung WHERE rezept = $1";
|
|
||||||
let values = [req.recepieId];
|
|
||||||
|
|
||||||
|
|
||||||
req.db.query(query, values, (err, rs) => {
|
|
||||||
if (err){
|
|
||||||
next(err);
|
|
||||||
} else {
|
|
||||||
let result = {};
|
|
||||||
result['recepieVotes'] = rs.rows[0];
|
|
||||||
res.status(200).json(result);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
router.post('/', function(req, res, next) {
|
|
||||||
let recepieVote = req.body.recepieVote;
|
|
||||||
if(!recepieVote.wert) {
|
|
||||||
return res.status(400).send("Wrong Params")
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!recepieVote.nutzer) recepieVote.nutzer = 0;
|
|
||||||
let query = "INSERT INTO rezept_wertung (rezept, wertungkategorie, nutzer, wert, beschreibung) "+
|
|
||||||
" VALUES ($1, (SELECT id from wertungkategorie where schluessel = 'sum'), $2, $3, $4)";
|
|
||||||
let values = [req.recepieId, recepieVote.nutzer, recepieVote.wert, recepieVote.beschreibung];
|
|
||||||
if(DEBUG) console.log(query);
|
|
||||||
req.db.query(query, values, (err, rs) => {
|
|
||||||
if (err) {
|
|
||||||
next(err);
|
|
||||||
} else {
|
|
||||||
query = "SELECT avg(wert) as rating FROM rezept_wertung WHERE rezept = $1";
|
|
||||||
values = [req.recepieId];
|
|
||||||
|
|
||||||
|
|
||||||
req.db.query(query, values, (err, rs) => {
|
|
||||||
if (err){
|
|
||||||
next(err);
|
|
||||||
} else {
|
|
||||||
let result = {};
|
|
||||||
result = rs.rows[0];
|
|
||||||
res.status(200).json(result);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = router;
|
|
|
@ -1,7 +1,7 @@
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
|
|
||||||
const DEBUG = false;
|
const DEBUG = false;
|
||||||
|
|
||||||
|
@ -31,38 +31,38 @@ router.get('/', function(req, res, next) {
|
||||||
} else {
|
} else {
|
||||||
let result = {};
|
let result = {};
|
||||||
result['users'] = rs.rows;
|
result['users'] = rs.rows;
|
||||||
if (DEBUG) console.log(result);
|
console.log(result);
|
||||||
res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// router.post('/', function(req, res, next) {
|
router.post('/', function(req, res, next) {
|
||||||
// let user = req.body.users[0];
|
let user = req.body.users[0];
|
||||||
// bcrypt.hash(user.kennwort, 10, function(err, hash) {
|
bcrypt.hash(user.kennwort, 10, function(err, hash) {
|
||||||
// let query = "INSERT INTO nutzer ( name, email, kennwort, beschreibung) "+
|
let query = "INSERT INTO nutzer ( name, email, kennwort, beschreibung) "+
|
||||||
// " VALUES ('"+user.name+"','"+user.email+"','"+hash+"','"+user.beschreibung+"')" +
|
" VALUES ('"+user.name+"','"+user.email+"','"+hash+"','"+user.beschreibung+"')" +
|
||||||
// " returning *";
|
" returning *";
|
||||||
// if(DEBUG) console.log(query);
|
if(DEBUG) console.log(query);
|
||||||
//
|
|
||||||
// req.db.query(query, (err, rs) => {
|
req.db.query(query, (err, rs) => {
|
||||||
// if(err && err.constraint && err.constraint ==='idx_nutzer_email') {
|
if(err && err.constraint && err.constraint ==='idx_nutzer_email') {
|
||||||
// return res.status(409).send("Email-adress already in use");
|
return res.status(409).send("Email-adress already in use");
|
||||||
// } else if (err){
|
} else if (err){
|
||||||
// next(err);
|
next(err);
|
||||||
// } else {
|
} else {
|
||||||
// let result = {};
|
let result = {};
|
||||||
// let user = {};
|
let user = {};
|
||||||
// user['name'] = rs.rows[0].name;
|
user['name'] = rs.rows[0].name;
|
||||||
// user['email'] = rs.rows[0].email;
|
user['email'] = rs.rows[0].email;
|
||||||
// user['id'] = rs.rows[0].id;
|
user['id'] = rs.rows[0].id;
|
||||||
// user['beschreibung'] = rs.rows[0].beschreibung;
|
user['beschreibung'] = rs.rows[0].beschreibung;
|
||||||
// result['users'] = user;
|
result['users'] = user;
|
||||||
// res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
// }
|
}
|
||||||
// });
|
});
|
||||||
// });
|
});
|
||||||
// });
|
});
|
||||||
|
|
||||||
|
|
||||||
router.put('/login', function(req, res, next) {
|
router.put('/login', function(req, res, next) {
|
||||||
|
|
|
@ -4,7 +4,7 @@ const cors = require('cors');
|
||||||
const xml = require('xml');
|
const xml = require('xml');
|
||||||
|
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
const randToken = require('rand-token');
|
const randToken = require('rand-token');
|
||||||
|
|
||||||
const DEBUG = true;
|
const DEBUG = true;
|
||||||
|
|
|
@ -2,7 +2,7 @@ const express = require('express');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
var cors = require('cors');
|
var cors = require('cors');
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
const randToken = require('rand-token');
|
const randToken = require('rand-token');
|
||||||
|
|
||||||
const DEBUG = true;
|
const DEBUG = true;
|
||||||
|
@ -34,8 +34,8 @@ router.get('/', function(req, res, next) {
|
||||||
next(err);
|
next(err);
|
||||||
} else {
|
} else {
|
||||||
let result = {};
|
let result = {};
|
||||||
result['person'] = rs.rows;
|
result['items'] = rs.rows;
|
||||||
console.log(result);
|
console.log(result);
|
||||||
res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,7 @@ const express = require('express');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
var cors = require('cors');
|
var cors = require('cors');
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
const randToken = require('rand-token');
|
const randToken = require('rand-token');
|
||||||
|
|
||||||
const DEBUG = true;
|
const DEBUG = true;
|
||||||
|
|
|
@ -2,7 +2,7 @@ const express = require('express');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
var cors = require('cors');
|
var cors = require('cors');
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
const randToken = require('rand-token');
|
const randToken = require('rand-token');
|
||||||
|
|
||||||
const DEBUG = true;
|
const DEBUG = true;
|
||||||
|
@ -34,7 +34,7 @@ router.get('/', function(req, res, next) {
|
||||||
next(err);
|
next(err);
|
||||||
} else {
|
} else {
|
||||||
let result = {};
|
let result = {};
|
||||||
result['schueler'] = rs.rows;
|
result['items'] = rs.rows;
|
||||||
console.log(result);
|
console.log(result);
|
||||||
res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ const express = require('express');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
var cors = require('cors');
|
var cors = require('cors');
|
||||||
|
|
||||||
|
const bcrypt = require('bcrypt');
|
||||||
const randToken = require('rand-token');
|
const randToken = require('rand-token');
|
||||||
|
|
||||||
const DEBUG = true;
|
const DEBUG = true;
|
||||||
|
@ -36,7 +36,7 @@ router.get('/', function(req, res, next) {
|
||||||
next(err);
|
next(err);
|
||||||
} else {
|
} else {
|
||||||
let result = {};
|
let result = {};
|
||||||
result['schuljahr'] = rs.rows;
|
result['items'] = rs.rows;
|
||||||
console.log(result);
|
console.log(result);
|
||||||
res.status(200).json(result);
|
res.status(200).json(result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
var express = require('express');
|
var express = require('express');
|
||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
|
|
||||||
const DEBUG = true;
|
|
||||||
|
|
||||||
const { selectAllFromTable,
|
const { selectAllFromTable,
|
||||||
selectAllFromTableByFieldValue,
|
selectAllFromTableByFieldValue,
|
||||||
|
@ -10,15 +9,13 @@ updateNameKeyObject,
|
||||||
insertNameKeyObject,
|
insertNameKeyObject,
|
||||||
deleteNameKeyObject,
|
deleteNameKeyObject,
|
||||||
getAllFromTable,
|
getAllFromTable,
|
||||||
getItemFromTable,
|
getStructure} = require('./../db/');
|
||||||
getStructure,
|
|
||||||
getDataStructure} = require('./../db/');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
router.param('id', function(req, res, next, id) {
|
router.param('id', function(req, res, next, id) {
|
||||||
req.itemId = id;
|
req.itemId = id;
|
||||||
if (DEBUG) console.log(req.body);
|
console.log(req.body);
|
||||||
let structure = getStructure(req);
|
let structure = getStructure(req);
|
||||||
req[structure.jsonName] = req.body;
|
req[structure.jsonName] = req.body;
|
||||||
next();
|
next();
|
||||||
|
@ -30,37 +27,23 @@ router.param('path', function(req, res, next, id) {
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
|
|
||||||
/* OPTIONS */
|
|
||||||
|
|
||||||
router.get('/options', function(req, res, next) {
|
|
||||||
getDataStructure(req, res, next);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* GET users listing. */
|
/* GET users listing. */
|
||||||
router.get('/:path', function(req, res, next) {
|
router.get('/:path', function(req, res, next) {
|
||||||
getAllFromTable(req, res, next)
|
getAllFromTable(req, res, next)
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/:path/:id', function(req, res, next) {
|
|
||||||
if (DEBUG) console.log("Get Item from WL");
|
|
||||||
getItemFromTable(req, res, next)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
router.put('/:path/:id', function(req, res, next) {
|
router.put('/:path/:id', function(req, res, next) {
|
||||||
if (DEBUG) console.log("Update WL");
|
console.log("Update WL");
|
||||||
updateNameKeyObject(req, res, next)
|
updateNameKeyObject(req, res, next)
|
||||||
});
|
});
|
||||||
|
|
||||||
router.post('/:path', function(req, res, next) {
|
router.post('/:path', function(req, res, next) {
|
||||||
if (DEBUG) console.log("Insert WL");
|
console.log("Insert WL");
|
||||||
insertNameKeyObject(req, res, next)
|
insertNameKeyObject(req, res, next)
|
||||||
});
|
});
|
||||||
|
|
||||||
router.delete('/:path/:id', function(req, res, next) {
|
router.delete('/:path/:id', function(req, res, next) {
|
||||||
if (DEBUG) console.log("Delete WL");
|
console.log("Delete WL");
|
||||||
deleteNameKeyObject(req, res, next)
|
deleteNameKeyObject(req, res, next)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
import { getUserByEmail } from ('./../db/');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class User {
|
||||||
|
|
||||||
|
findOne(username) {
|
||||||
|
getUserByEmail(username).then()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export default User;
|
|
@ -0,0 +1,4 @@
|
||||||
|
import React from 'react';
|
||||||
|
import ReactDOM from 'react-dom';
|
||||||
|
import App from './views/App';
|
||||||
|
ReactDOM.render(<App />, document.getElementById('root'));
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"name": "schmeckWieDaheim-FrontEnd",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"dependencies": {
|
||||||
|
"react": "^16.7.0",
|
||||||
|
"react-dom": "^16.7.0",
|
||||||
|
"react-scripts": "2.1.2",
|
||||||
|
"whatwg-fetch": "^3.0.0"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"start": "react-scripts start",
|
||||||
|
"build": "react-scripts build",
|
||||||
|
"test": "react-scripts test",
|
||||||
|
"eject": "react-scripts eject"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"extends": "react-app"
|
||||||
|
},
|
||||||
|
"browserslist": [
|
||||||
|
">0.2%",
|
||||||
|
"not dead",
|
||||||
|
"not ie <= 11",
|
||||||
|
"not op_mini all"
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
// API-Class to fetch Information from "schmektWieDaheim"
|
||||||
|
|
||||||
|
import 'whatwg-fetch';
|
||||||
|
|
||||||
|
const Cookbook = {};
|
||||||
|
const baseUrl = 'http://localhost:4000';
|
||||||
|
|
||||||
|
Cookbook.getRecepies = () => {
|
||||||
|
const url = `${baseUrl}/recepies`;
|
||||||
|
|
||||||
|
return fetch(url).then(response => {
|
||||||
|
if(!response.ok) {
|
||||||
|
return new Proimse(resolve => resolve([]));
|
||||||
|
}
|
||||||
|
return response.json().then(jsonResponse => {
|
||||||
|
return jsonResponse.recepies.map(recepie);
|
||||||
|
})
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Export Module
|
||||||
|
|
||||||
|
export default Cookbook;
|
|
@ -0,0 +1,33 @@
|
||||||
|
import React, { Component } from 'react';
|
||||||
|
import { Link, HashRouter as Router, Route, browserHistory } from 'react-router-dom';
|
||||||
|
|
||||||
|
|
||||||
|
import Recepie from './Recepie';
|
||||||
|
|
||||||
|
class App extends Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.state = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
render () {
|
||||||
|
return (
|
||||||
|
<Router history={browserHistory}>
|
||||||
|
<div className="App">
|
||||||
|
<header>
|
||||||
|
<Link to="/" className="logo">
|
||||||
|
<img src='public/img/logo.svg' alt="logo" />
|
||||||
|
</Link>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<Route exact path="/" component={Landing} />
|
||||||
|
|
||||||
|
|
||||||
|
<Route path="/recepies/:id" component={Employee} />
|
||||||
|
</div>
|
||||||
|
</Router>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default App;
|
|
@ -0,0 +1,34 @@
|
||||||
|
import React, { Component } from 'react';
|
||||||
|
import { withRouter } from "react-router-dom";
|
||||||
|
|
||||||
|
import Cookbook from '../utils/Cookbook';
|
||||||
|
|
||||||
|
|
||||||
|
class Cookbook extends Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
|
||||||
|
this.state = {
|
||||||
|
recepie: null,
|
||||||
|
ingredients: [],
|
||||||
|
durations: []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
render() {
|
||||||
|
|
||||||
|
if (!this.state.recepie) {
|
||||||
|
return <div className="Recepie">Kein Rezept gefunden</div>
|
||||||
|
}
|
||||||
|
const recepie = this.state.recepie;
|
||||||
|
return (
|
||||||
|
<div className="Recepie">Rezept gefunden</div>
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export default withRouter(Cookbook);
|
Loading…
Reference in New Issue