Refactor backend to import/export syntax and update deps
This commit is contained in:
parent
1463773480
commit
7d0f3898de
20 changed files with 3168 additions and 685 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue