From ea913a9088c006bc9dcd5f1129aa3361483e74e2 Mon Sep 17 00:00:00 2001 From: Georg Reisinger Date: Mon, 29 Oct 2018 09:00:25 +0100 Subject: [PATCH] Revert "Revert "Merge branch 'master' of https://github.com/LukasNowy/SmartShopper"" This reverts commit 84afb3f32d83e622f6312d793934c7719dba4a74. --- express-server/db-connect/db-connect.js | 44 ++++++++++++++++++++++- express-server/public/javascripts/ajax.js | 12 +++++++ express-server/routes/index.js | 17 +++++++-- 3 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 express-server/public/javascripts/ajax.js diff --git a/express-server/db-connect/db-connect.js b/express-server/db-connect/db-connect.js index 337b5f7a..9d88b920 100644 --- a/express-server/db-connect/db-connect.js +++ b/express-server/db-connect/db-connect.js @@ -1,5 +1,6 @@ const { query, nonQuery } = require("../db-config/postgresql-common"); +//SELECT own shopping lists async function getShoppinglistsAdmin(username) { try { @@ -14,6 +15,8 @@ async function getShoppinglistsAdmin(username) { } } +//SELECT shared shopping lists + async function getShoppinglistsShared(username) { try { let result = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" JOIN "Shoppinglist_member" USING (sl_id) WHERE \ @@ -27,7 +30,46 @@ async function getShoppinglistsShared(username) { } } +//INSERT new Shoppinglist + +async function newShoppinglist(name, description, username) { + + //generate sl_id + + let sl_id = generate_sl_id(); + + //insert shoppinglist + try { + await nonQuery('INSERT INTO "Shoppinglist" (sl_id, name, description) VALUES ($1, $2, $3);', [sl_id, name, description]); + } + + catch (error) { + console.error(error) + } + + //insert admin + try { + await nonQuery('INSERT INTO "Shoppinglist_admin" (username, sl_id) VALUES ($1, $2);', [username, sl_id]); + } + + catch (error) { + console.error(error) + } +} + + +//sl_id generieren +function generate_sl_id() { + var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + var output = ""; + + for(let i = 0; i < 8; i++) { + output += possible.charAt(Math.floor(Math.random() * possible.length)); + } + + return output; +} module.exports = { - getShoppinglistsAdmin, getShoppinglistsShared + getShoppinglistsAdmin, getShoppinglistsShared, newShoppinglist } diff --git a/express-server/public/javascripts/ajax.js b/express-server/public/javascripts/ajax.js new file mode 100644 index 00000000..5c69311e --- /dev/null +++ b/express-server/public/javascripts/ajax.js @@ -0,0 +1,12 @@ +$(document).ready(function() { + //DELETE THIS + $.ajax({ + type: "POST", + url: "/shoppinglist", + data: { + name: "Name Test", + description: "Description Test" + } + }); + // --- +}); \ No newline at end of file diff --git a/express-server/routes/index.js b/express-server/routes/index.js index 39d17b45..2f32304d 100644 --- a/express-server/routes/index.js +++ b/express-server/routes/index.js @@ -49,6 +49,7 @@ router.get('/logout', (req, res) => { router.get('/dash', function(req, res, next) { console.log("Session: ", req.session.passport.user.token); + console.log("User ID: " + req.session.passport.user.profile.id); if (req.session.passport.user.token) { res.render('index'); } else { @@ -61,7 +62,7 @@ router.get('/dash', function(req, res, next) { router.get("/myshoppinglists", async function(req, res, next) { try { //Get user id: req.session.passport.user.profile.id - res.status(200).send(await postgres.getShoppinglistsAdmin("testuser")); + res.status(200).send(await postgres.getShoppinglistsAdmin(req.session.passport.user.profile.id)); } catch(err) { @@ -75,7 +76,7 @@ router.get("/myshoppinglists", async function(req, res, next) { router.get("/sharedshoppinglists", async function(req, res, next) { try { //Get user id: req.session.passport.user.profile.id - res.status(200).send(await postgres.getShoppinglistsShared("testuser")); + res.status(200).send(await postgres.getShoppinglistsShared(req.session.passport.user.profile.id)); } catch(err) { @@ -84,4 +85,16 @@ router.get("/sharedshoppinglists", async function(req, res, next) { }); +//POST new shoppinglist + +router.post("/shoppinglist", async function(req, res, next) { + try { + res.status(200).send(await postgres.newShoppinglist(req.body.name, req.body.description, req.session.passport.user.profile.id)); + } + + catch(err) { + res.status(400).send(await err); + } +}); + module.exports = router;