Refactor backend to import/export syntax and update deps

This commit is contained in:
Ben Grant 2022-08-20 21:35:38 +10:00
parent 1463773480
commit 7d0f3898de
20 changed files with 3168 additions and 685 deletions

View file

@ -1,81 +1,84 @@
const dayjs = require('dayjs');
const punycode = require('punycode/');
import dayjs from 'dayjs'
import punycode from 'punycode/'
const adjectives = require('../res/adjectives.json');
const crabs = require('../res/crabs.json');
import adjectives from '../res/adjectives.json'
import crabs from '../res/crabs.json'
const capitalize = string => string.charAt(0).toUpperCase() + string.slice(1);
const capitalize = string => string.charAt(0).toUpperCase() + string.slice(1)
// Generate a random name based on an adjective and a crab species
const generateName = () => {
return `${capitalize(adjectives[Math.floor(Math.random() * adjectives.length)])} ${crabs[Math.floor(Math.random() * crabs.length)]} Crab`;
};
const generateName = () =>
`${capitalize(adjectives[Math.floor(Math.random() * adjectives.length)])} ${crabs[Math.floor(Math.random() * crabs.length)]} Crab`
// Generate a slug for the crab fit
const generateId = name => {
let id = punycode.encode(name.trim().toLowerCase()).trim().replace(/[^A-Za-z0-9 ]/g, '').replace(/\s+/g, '-');
let id = punycode.encode(name.trim().toLowerCase()).trim().replace(/[^A-Za-z0-9 ]/g, '').replace(/\s+/g, '-')
if (id.replace(/-/g, '') === '') {
id = generateName().trim().toLowerCase().replace(/[^A-Za-z0-9 ]/g, '').replace(/\s+/g, '-');
id = generateName().trim().toLowerCase().replace(/[^A-Za-z0-9 ]/g, '').replace(/\s+/g, '-')
}
const number = Math.floor(100000 + Math.random() * 900000);
return `${id}-${number}`;
};
const number = Math.floor(100000 + Math.random() * 900000)
return `${id}-${number}`
}
module.exports = async (req, res) => {
const { event } = req.body;
const createEvent = async (req, res) => {
const { event } = req.body
try {
const name = event.name.trim() === '' ? generateName() : event.name.trim();
let eventId = generateId(name);
const currentTime = dayjs().unix();
try {
const name = event.name.trim() === '' ? generateName() : event.name.trim()
let eventId = generateId(name)
const currentTime = dayjs().unix()
// Check if the event ID already exists, and if so generate a new one
let eventResult;
let eventResult
do {
const query = req.datastore.createQuery(req.types.event)
.select('__key__')
.filter('__key__', req.datastore.key([req.types.event, eventId]));
.filter('__key__', req.datastore.key([req.types.event, eventId]))
eventResult = (await req.datastore.runQuery(query))[0][0];
eventResult = (await req.datastore.runQuery(query))[0][0]
if (eventResult !== undefined) {
eventId = generateId(name);
eventId = generateId(name)
}
} while (eventResult !== undefined);
} while (eventResult !== undefined)
const entity = {
key: req.datastore.key([req.types.event, eventId]),
data: {
name: name,
created: currentTime,
times: event.times,
timezone: event.timezone,
},
};
key: req.datastore.key([req.types.event, eventId]),
data: {
name: name,
created: currentTime,
times: event.times,
timezone: event.timezone,
},
}
await req.datastore.insert(entity);
await req.datastore.insert(entity)
res.status(201).send({
id: eventId,
name: name,
created: currentTime,
times: event.times,
res.status(201).send({
id: eventId,
name: name,
created: currentTime,
times: event.times,
timezone: event.timezone,
});
})
// Update stats
let eventCountResult = (await req.datastore.get(req.datastore.key([req.types.stats, 'eventCount'])))[0] || null;
const eventCountResult = (await req.datastore.get(req.datastore.key([req.types.stats, 'eventCount'])))[0] || null
if (eventCountResult) {
eventCountResult.value++;
await req.datastore.upsert(eventCountResult);
await req.datastore.upsert({
...eventCountResult,
value: eventCountResult.value + 1,
})
} else {
await req.datastore.insert({
key: req.datastore.key([req.types.stats, 'eventCount']),
data: { value: 1 },
});
await req.datastore.insert({
key: req.datastore.key([req.types.stats, 'eventCount']),
data: { value: 1 },
})
}
} catch (e) {
console.error(e);
res.sendStatus(400);
}
};
} catch (e) {
console.error(e)
res.sendStatus(400)
}
}
export default createEvent