From 8b5ac7f398b4e67f5a6275724c005bf7f1087d2a Mon Sep 17 00:00:00 2001 From: Andrea Vos Date: Thu, 3 Jun 2021 18:28:53 +0200 Subject: [PATCH] quick fix for database issues --- server/routes/admin.js | 2 ++ server/routes/profile.js | 27 +++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/server/routes/admin.js b/server/routes/admin.js index 4150d4d50..fdb889fc9 100644 --- a/server/routes/admin.js +++ b/server/routes/admin.js @@ -61,6 +61,8 @@ router.get('/admin/users', async (req, res) => { return res.status(401).json({error: 'Unauthorised'}); } + return res.json({}); + const users = await req.db.all(SQL` SELECT u.id, u.username, u.email, u.roles, u.avatarSource, p.locale FROM users u diff --git a/server/routes/profile.js b/server/routes/profile.js index d4c69ce6e..64a11008b 100644 --- a/server/routes/profile.js +++ b/server/routes/profile.js @@ -67,15 +67,34 @@ router.post('/profile/save', async (req, res) => { return res.status(401).json({error: 'Unauthorised'}); } - await req.db.get(SQL`DELETE FROM profiles WHERE userId = ${req.user.id} AND locale = ${req.config.locale}`); - await req.db.get(SQL`INSERT INTO profiles (id, userId, locale, names, pronouns, description, birthday, links, flags, customFlags, words, active, teamName, footerName, footerAreas) - VALUES (${ulid()}, ${req.user.id}, ${req.config.locale}, ${JSON.stringify(req.body.names)}, ${JSON.stringify(req.body.pronouns)}, + // TODO just make it a transaction... + const ids = (await req.db.all(SQL`SELECT * FROM profiles WHERE userId = ${req.user.id} AND locale = ${req.config.locale}`)).map(row => row.id); + if (ids.length) { + await req.db.get(SQL`UPDATE profiles + SET + names = ${JSON.stringify(req.body.names)}, + pronouns = ${JSON.stringify(req.body.pronouns)}, + description = ${req.body.description}, + birthday = ${req.body.birthday || null}, + links = ${JSON.stringify(req.body.links.filter(x => !!x))}, + flags = ${JSON.stringify(req.body.flags)}, + customFlags = ${JSON.stringify(req.body.customFlags)}, + words = ${JSON.stringify(req.body.words)}, + teamName = ${req.isGranted('users') ? req.body.teamName || null : ''}, + footerName = ${req.isGranted('users') ? req.body.footerName || null : ''}, + footerAreas = ${req.isGranted('users') ? req.body.footerAreas.join(',').toLowerCase() || null : ''} + WHERE id = ${ids[0]} + `); + } else { + await req.db.get(SQL`INSERT INTO profiles (id, userId, locale, names, pronouns, description, birthday, links, flags, customFlags, words, active, teamName, footerName, footerAreas) + VALUES (${ulid()}, ${req.user.id}, ${req.config.locale}, ${JSON.stringify(req.body.names)}, ${JSON.stringify(req.body.pronouns)}, ${req.body.description}, ${req.body.birthday || null}, ${JSON.stringify(req.body.links.filter(x => !!x))}, ${JSON.stringify(req.body.flags)}, ${JSON.stringify(req.body.customFlags)}, ${JSON.stringify(req.body.words)}, 1, ${req.isGranted('users') ? req.body.teamName || null : ''}, ${req.isGranted('users') ? req.body.footerName || null : ''}, ${req.isGranted('users') ? req.body.footerAreas.join(',').toLowerCase() || null : ''} - )`); + )`); + } return res.json(await fetchProfiles(req.db, req.user.username, true)); });