Email Login
This commit is contained in:
@ -1,4 +1,7 @@
|
||||
const { query, nonQuery } = require("../db-config/postgresql-common");
|
||||
const {
|
||||
query,
|
||||
nonQuery
|
||||
} = require("../db-config/postgresql-common");
|
||||
|
||||
const stringSimilarity = require('string-similarity');
|
||||
|
||||
@ -7,12 +10,10 @@ const stringSimilarity = require('string-similarity');
|
||||
//Create User Info
|
||||
|
||||
async function updateUser(uid, mid, name, picture, email) {
|
||||
try {
|
||||
try {
|
||||
await nonQuery('INSERT INTO "User" (username, message_id, name, picture, email) VALUES ($1, $2, $3, $4, $5);', [uid, mid, name, picture, email]);
|
||||
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -22,10 +23,8 @@ async function getmessageids(sl_id) {
|
||||
let members = query('SELECT * FROM "Shoppinglist_member" WHERE sl_id = $1;', [sl_id]);
|
||||
let admin = query('SELECT * FROM "Shoppinglist_admin" WHERE sl_id = $1;', [sl_id]);
|
||||
return users_to_array(admin, members);
|
||||
|
||||
}
|
||||
|
||||
catch(error) {
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
}
|
||||
@ -35,13 +34,13 @@ async function getmessageids(sl_id) {
|
||||
async function searchUsers(searchstring) {
|
||||
try {
|
||||
let users = await query('SELECT row_to_json("User") AS obj FROM "User";');
|
||||
return users.filter(function(obj) {return obj.name.toUpperCase().includes(searchstring.toUpperCase())});
|
||||
}
|
||||
|
||||
catch(error) {
|
||||
return users.filter(function (obj) {
|
||||
return obj.name.toUpperCase().includes(searchstring.toUpperCase())
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -49,14 +48,12 @@ async function searchUsers(searchstring) {
|
||||
//SELECT own shopping lists
|
||||
async function getShoppinglistsAdmin(username) {
|
||||
try {
|
||||
|
||||
|
||||
let result = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" JOIN "Shoppinglist_admin" USING (sl_id) WHERE \
|
||||
username = $1', [username]);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -67,9 +64,7 @@ async function getShoppinglistsByLink(link) {
|
||||
console.log("PPPPP LIIINK:", link)
|
||||
let result = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" WHERE invitelink = $1', [link]);
|
||||
return result;
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -81,9 +76,7 @@ async function getShoppinglistsShared(username) {
|
||||
let result = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" JOIN "Shoppinglist_member" USING (sl_id) WHERE username = $1;', [username]);
|
||||
console.log(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -100,27 +93,21 @@ async function newShoppinglist(name, description, username, color) {
|
||||
|
||||
try {
|
||||
await nonQuery('INSERT INTO "User" (username) VALUES ($1);', [username]);
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
|
||||
//insert shoppinglist
|
||||
try {
|
||||
await nonQuery('INSERT INTO "Shoppinglist" (sl_id, name, description, color) VALUES ($1, $2, $3, $4);', [sl_id, name, description, color]);
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} 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) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -131,21 +118,19 @@ async function newShoppinglist(name, description, username, color) {
|
||||
async function editShoppinglist(sl_id, newname, newdescription, newcolor) {
|
||||
try {
|
||||
let shoppinglist = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" WHERE sl_id = $1;', [sl_id]);
|
||||
|
||||
if(shoppinglist.name != newname && newname != undefined) {
|
||||
|
||||
if (shoppinglist.name != newname && newname != undefined) {
|
||||
await nonQuery('UPDATE "Shoppinglist" SET name = $1 WHERE sl_id = $2;', [newname, sl_id]);
|
||||
}
|
||||
|
||||
if(shoppinglist.description != newdescription && newdescription != undefined) {
|
||||
if (shoppinglist.description != newdescription && newdescription != undefined) {
|
||||
await nonQuery('UPDATE "Shoppinglist" SET description = $1 WHERE sl_id = $2;', [newdescription, sl_id]);
|
||||
}
|
||||
|
||||
if(shoppinglist.color != newcolor && newcolor != undefined) {
|
||||
if (shoppinglist.color != newcolor && newcolor != undefined) {
|
||||
await nonQuery('UPDATE "Shoppinglist" SET color = $1 WHERE sl_id = $2;', [newcolor, sl_id]);
|
||||
}
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -173,9 +158,7 @@ async function displayShoppinglist(sl_id) {
|
||||
let admin = await query('SELECT row_to_json("User") as obj FROM "User" JOIN "Shoppinglist_admin" USING (username) WHERE sl_id = $1', [sl_id]);
|
||||
|
||||
return items_in_groups(groups, items, sl_id, admin[0].username, admin[0].message_id, members, shoppinglist[0].name, shoppinglist[0].description);
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -188,9 +171,7 @@ async function deleteShoppinglist(sl_id) {
|
||||
await nonQuery('DELETE FROM "Shoppinglist_admin" WHERE sl_id = $1', [sl_id]);
|
||||
await nonQuery('DELETE FROM "Shoppinglist_member" WHERE sl_id = $1', [sl_id]);
|
||||
await nonQuery('DELETE FROM "Shoppinglist" WHERE sl_id = $1', [sl_id]);
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -201,9 +182,7 @@ async function addGroup(sl_id, name, color, hidden) {
|
||||
try {
|
||||
let grid = generate_group_id();
|
||||
await nonQuery('INSERT INTO "Group" (group_id, sl_id, name, color, hidden) VALUES ($1, $2, $3, $4, $5);', [grid, sl_id, name, color, hidden]);
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -214,9 +193,7 @@ async function addItem(group_id, sl_id, name, count) {
|
||||
try {
|
||||
let itid = generate_item_id();
|
||||
await nonQuery('INSERT INTO "Item" VALUES ($1, $2, $3, $4, $5);', [itid, group_id, sl_id, name, count]);
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -224,23 +201,21 @@ async function addItem(group_id, sl_id, name, count) {
|
||||
//Edit Group
|
||||
async function editGroup(sl_id, group_id, name, color, hidden) {
|
||||
try {
|
||||
let group = await query('SELECT row_to_json("Group") AS obj FROM "Group" WHERE group_id = $1 AND sl_id = $2', [sl_id, group_id]);
|
||||
let group = await query('SELECT row_to_json("Group") AS obj FROM "Group" WHERE group_id = $1 AND sl_id = $2', [sl_id, group_id]);
|
||||
|
||||
if(group.name != name && name != undefined) {
|
||||
if (group.name != name && name != undefined) {
|
||||
await nonQuery('UPDATE "Group" SET name = $1 WHERE group_id = $2 AND sl_id = $3;', [name, group_id, sl_id]);
|
||||
}
|
||||
|
||||
if(group.color != color && color != undefined) {
|
||||
if (group.color != color && color != undefined) {
|
||||
await nonQuery('UPDATE "Group" SET color = $1 WHERE group_id = $2 AND sl_id = $3;', [color, group_id, sl_id]);
|
||||
}
|
||||
|
||||
if(group.hidden != hidden && hidden != undefined) {
|
||||
if (group.hidden != hidden && hidden != undefined) {
|
||||
await nonQuery('UPDATE "Group" SET hidden = $1 WHERE group_id = $2 AND sl_id = $3;', [hidden, group_id, sl_id]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -252,16 +227,14 @@ async function editItem(sl_id, group_id, item_id, name, count) {
|
||||
try {
|
||||
let item = query('SELECT row_to_json("Item") FROM "Item" WHERE item_id = $1 AND group_id = $2 AND sl_id = $3', [item_id, group_id, sl_id]);
|
||||
|
||||
if(item.name != name && name != undefined) {
|
||||
if (item.name != name && name != undefined) {
|
||||
await nonQuery('UPDATE "Item" SET name = $1 WHERE item_id = $2 AND group_id = $3 AND sl_id = $4', [name, item_id, group_id, sl_id]);
|
||||
}
|
||||
|
||||
if(item.count != count && count != undefined) {
|
||||
if (item.count != count && count != undefined) {
|
||||
await nonQuery('UPDATE "Item" SET count = $1 WHERE item_id = $2 AND group_id = $3 AND sl_id = $4', [count, item_id, group_id, sl_id]);
|
||||
}
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -275,9 +248,7 @@ async function deleteGroup(group_id, sl_id) {
|
||||
|
||||
//Leere Gruppe löschen
|
||||
nonQuery('DELETE FROM "Group" WHERE group_id = $1 AND sl_id = $2', [group_id, sl_id]);
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -287,9 +258,7 @@ async function deleteGroup(group_id, sl_id) {
|
||||
async function deleteItem(item_id, group_id, sl_id) {
|
||||
try {
|
||||
nonQuery('DELETE FROM "Item" WHERE item_id = $1 AND group_id = $2 AND sl_id = $3;', [item_id, group_id, sl_id]);
|
||||
}
|
||||
|
||||
catch(error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -304,35 +273,33 @@ async function moveDoneItems(uid, sl_id, billcontent) {
|
||||
|
||||
var today = new Date();
|
||||
var dd = today.getDate();
|
||||
var mm = today.getMonth()+1;
|
||||
var mm = today.getMonth() + 1;
|
||||
var yyyy = today.getFullYear();
|
||||
|
||||
if(dd<10) {
|
||||
dd = '0'+dd
|
||||
}
|
||||
if (dd < 10) {
|
||||
dd = '0' + dd
|
||||
}
|
||||
|
||||
if(mm<10) {
|
||||
mm = '0'+mm
|
||||
}
|
||||
if (mm < 10) {
|
||||
mm = '0' + mm
|
||||
}
|
||||
|
||||
today = mm + '/' + dd + '/' + yyyy;
|
||||
|
||||
for(let item of removeableItems) {
|
||||
for (let item of removeableItems) {
|
||||
await nonQuery('INSERT INTO "Done_Purchase" (purchased_item_id, username, name, date, count) VALUES($1,$2,$3,$4,$5);',
|
||||
[generate_item_id(), uid, item.name, today, 1]);
|
||||
[generate_item_id(), uid, item.name, today, 1]);
|
||||
|
||||
}
|
||||
|
||||
for(let item of removeableItems) {
|
||||
|
||||
for (let item of removeableItems) {
|
||||
await nonQuery('DELETE FROM "Item" WHERE item_id = $1 AND group_id = $2 AND sl_id = $3;', [item.item_id, item.group_id, item.sl_id]);
|
||||
console.log(item);
|
||||
|
||||
}
|
||||
|
||||
return "done"
|
||||
}
|
||||
|
||||
catch(error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -343,9 +310,7 @@ async function getDonePurchases(uid) {
|
||||
try {
|
||||
let result = await query('SELECT row_to_json("Done_Purchase") AS obj FROM "Done_Purchase" WHERE username = $1;', [uid]);
|
||||
return result;
|
||||
}
|
||||
|
||||
catch(error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -366,9 +331,7 @@ async function verifyInvite(link, user_id) {
|
||||
let sl_id = result[0].sl_id;
|
||||
console.log("!!! SL ID: ", sl_id);
|
||||
await nonQuery('INSERT INTO "Shoppinglist_member" (username, sl_id) VALUES ($1, $2);', [user_id, sl_id]);
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -377,9 +340,7 @@ async function createInvite(sl_id) {
|
||||
try {
|
||||
let link = generateInviteLink();
|
||||
await nonQuery('UPDATE "Shoppinglist" SET invitelink = $1 WHERE sl_id = $2;', [link, sl_id]);
|
||||
}
|
||||
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -388,9 +349,7 @@ async function createInvite(sl_id) {
|
||||
async function manInvite(sl_id, uid) {
|
||||
try {
|
||||
await nonQuery('INSERT INTO "Shoppinglist_member" (username, sl_id) VALUES ($1, $2);', [uid, sl_id]);
|
||||
}
|
||||
|
||||
catch(error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -400,9 +359,7 @@ async function manInvite(sl_id, uid) {
|
||||
async function removeMember(uid, sl_id) {
|
||||
try {
|
||||
await nonQuery('DELETE FROM "Shoppinglist_member" WHERE username = $1 AND sl_id = $2', [uid, sl_id]);
|
||||
}
|
||||
|
||||
catch(error) {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
@ -417,7 +374,7 @@ function generate_sl_id() {
|
||||
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var output = "";
|
||||
|
||||
for(let i = 0; i < 8; i++) {
|
||||
for (let i = 0; i < 8; i++) {
|
||||
output += possible.charAt(Math.floor(Math.random() * possible.length));
|
||||
}
|
||||
|
||||
@ -429,7 +386,7 @@ function generate_group_id() {
|
||||
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var output = "";
|
||||
|
||||
for(let i = 0; i < 8; i++) {
|
||||
for (let i = 0; i < 8; i++) {
|
||||
output += possible.charAt(Math.floor(Math.random() * possible.length));
|
||||
}
|
||||
|
||||
@ -441,7 +398,7 @@ function generate_item_id() {
|
||||
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var output = "";
|
||||
|
||||
for(let i = 0; i < 8; i++) {
|
||||
for (let i = 0; i < 8; i++) {
|
||||
output += possible.charAt(Math.floor(Math.random() * possible.length));
|
||||
}
|
||||
|
||||
@ -462,17 +419,19 @@ function items_in_groups(groups, items, sl_id, admin_uid, admin_mid, members, na
|
||||
groups: []
|
||||
};
|
||||
|
||||
for(let item of groups) {
|
||||
for (let item of groups) {
|
||||
|
||||
result.groups.push({
|
||||
group_id: item.group_id,
|
||||
name: item.name,
|
||||
color: item.color,
|
||||
content: items.filter(function(obj) {return obj.group_id == item.group_id})
|
||||
content: items.filter(function (obj) {
|
||||
return obj.group_id == item.group_id
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
for(let item of members) {
|
||||
for (let item of members) {
|
||||
|
||||
result.members.push({
|
||||
uid: item.username,
|
||||
@ -488,7 +447,7 @@ function generateInviteLink() {
|
||||
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var output = "";
|
||||
|
||||
for(let i = 0; i < 50; i++) {
|
||||
for (let i = 0; i < 50; i++) {
|
||||
output += possible.charAt(Math.floor(Math.random() * possible.length));
|
||||
}
|
||||
|
||||
@ -500,7 +459,7 @@ function users_to_array(admin, members) {
|
||||
|
||||
users.push(admin.username);
|
||||
|
||||
for(let item of members) {
|
||||
for (let item of members) {
|
||||
users.push(item.username);
|
||||
}
|
||||
|
||||
@ -513,28 +472,18 @@ function compareData(listitems, doneitems) {
|
||||
|
||||
let output = [];
|
||||
|
||||
for(let item of listitems) {
|
||||
if(doneitems.includes(item.name)) {
|
||||
for (let item of listitems) {
|
||||
if (doneitems.includes(item.name)) {
|
||||
output.push(item);
|
||||
}
|
||||
|
||||
else if(doneitems.toUpperCase().includes(item.name.toUpperCase())) {
|
||||
} else if (doneitems.toUpperCase().includes(item.name.toUpperCase())) {
|
||||
output.push(item);
|
||||
}
|
||||
|
||||
else if(doneitems.toLowerCase().includes(item.name.toLowerCase())) {
|
||||
} else if (doneitems.toLowerCase().includes(item.name.toLowerCase())) {
|
||||
output.push(item);
|
||||
}
|
||||
|
||||
else if(probability(item.name, doneitems) > 0.6) {
|
||||
} else if (probability(item.name, doneitems) > 0.6) {
|
||||
output.push(item);
|
||||
}
|
||||
|
||||
else if(probability(item.name.toUpperCase(), doneitems.toUpperCase()) > 0.6) {
|
||||
} else if (probability(item.name.toUpperCase(), doneitems.toUpperCase()) > 0.6) {
|
||||
output.push(item);
|
||||
}
|
||||
|
||||
else if(probability(item.name.toLowerCase(), doneitems.toLowerCase()) > 0.6) {
|
||||
} else if (probability(item.name.toLowerCase(), doneitems.toLowerCase()) > 0.6) {
|
||||
output.push(item);
|
||||
}
|
||||
}
|
||||
@ -546,11 +495,11 @@ function probability(cur_item, data) {
|
||||
|
||||
let best = 0;
|
||||
|
||||
for(let i = 0; i < data.length; i++) {
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
|
||||
let prob = stringSimilarity.compareTwoStrings(cur_item, data.slice(i, i + cur_item.length));
|
||||
|
||||
if(prob > best) {
|
||||
if (prob > best) {
|
||||
best = prob;
|
||||
}
|
||||
}
|
||||
@ -561,7 +510,25 @@ function probability(cur_item, data) {
|
||||
|
||||
|
||||
module.exports = {
|
||||
getShoppinglistsAdmin, getShoppinglistsShared, newShoppinglist, displayShoppinglist, deleteShoppinglist, addGroup,
|
||||
addItem, verifyInvite, createInvite, editShoppinglist, editGroup, editItem, deleteGroup, deleteItem, manInvite, updateUser,
|
||||
moveDoneItems, getDonePurchases, getShoppinglistsByLink, searchUsers, removeMember
|
||||
}
|
||||
getShoppinglistsAdmin,
|
||||
getShoppinglistsShared,
|
||||
newShoppinglist,
|
||||
displayShoppinglist,
|
||||
deleteShoppinglist,
|
||||
addGroup,
|
||||
addItem,
|
||||
verifyInvite,
|
||||
createInvite,
|
||||
editShoppinglist,
|
||||
editGroup,
|
||||
editItem,
|
||||
deleteGroup,
|
||||
deleteItem,
|
||||
manInvite,
|
||||
updateUser,
|
||||
moveDoneItems,
|
||||
getDonePurchases,
|
||||
getShoppinglistsByLink,
|
||||
searchUsers,
|
||||
removeMember
|
||||
}
|
Reference in New Issue
Block a user