From a3666930a09d98ed73e1a03e65c2df92258a6938 Mon Sep 17 00:00:00 2001 From: Ben Grant Date: Wed, 12 May 2021 21:27:00 +1000 Subject: [PATCH] Event ID conflict management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤜💥🤛 --- crabfit-backend/routes/createEvent.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/crabfit-backend/routes/createEvent.js b/crabfit-backend/routes/createEvent.js index 08562f3..0323e2d 100644 --- a/crabfit-backend/routes/createEvent.js +++ b/crabfit-backend/routes/createEvent.js @@ -20,10 +20,23 @@ module.exports = async (req, res) => { try { const name = event.name.trim() === '' ? generateName() : event.name.trim(); - const eventId = generateId(name); + let eventId = generateId(name); const currentTime = dayjs().unix(); - const entity = { + let eventResult; + do { + const query = req.datastore.createQuery(req.types.event) + .select('__key__') + .filter('__key__', req.datastore.key([req.types.event, eventId])); + + eventResult = (await req.datastore.runQuery(query))[0][0]; + + if (eventResult !== undefined) { + eventId = generateId(name); + } + } while (eventResult !== undefined); + + const entity = { key: req.datastore.key([req.types.event, eventId]), data: { name: name,