Backend
This commit is contained in:
parent
15d4e2f126
commit
edcd4dcaa0
15 changed files with 1195 additions and 82 deletions
|
|
@ -1,10 +1,43 @@
|
|||
module.exports = (req, res) => {
|
||||
const dayjs = require('dayjs');
|
||||
|
||||
const generateId = (name) => {
|
||||
const id = name.trim().toLowerCase().replace(/[^A-Za-z0-9 ]/g, '').replace(/\s+/g, '-');
|
||||
const number = Math.floor(100000 + Math.random() * 900000);
|
||||
return `${id}-${number}`;
|
||||
};
|
||||
|
||||
module.exports = async (req, res) => {
|
||||
const { event } = req.body;
|
||||
|
||||
if (event) {
|
||||
console.log(event);
|
||||
res.sendStatus(201);
|
||||
} else {
|
||||
try {
|
||||
const eventId = generateId(event.name);
|
||||
const currentTime = dayjs().unix();
|
||||
|
||||
const entity = {
|
||||
key: req.datastore.key(['Event', eventId]),
|
||||
data: {
|
||||
name: event.name.trim(),
|
||||
created: currentTime,
|
||||
timezone: event.timezone,
|
||||
startTime: event.startTime,
|
||||
endTime: event.endTime,
|
||||
dates: event.dates,
|
||||
},
|
||||
};
|
||||
|
||||
await req.datastore.insert(entity);
|
||||
|
||||
res.status(201).send({
|
||||
id: eventId,
|
||||
name: event.name.trim(),
|
||||
created: currentTime,
|
||||
timezone: event.timezone,
|
||||
startTime: event.startTime,
|
||||
endTime: event.endTime,
|
||||
dates: event.dates,
|
||||
});
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
res.sendStatus(400);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,15 +1,45 @@
|
|||
module.exports = (req, res) => {
|
||||
const dayjs = require('dayjs');
|
||||
const bcrypt = require('bcrypt');
|
||||
|
||||
module.exports = async (req, res) => {
|
||||
const { eventId } = req.params;
|
||||
const { person } = req.body;
|
||||
|
||||
if (eventId) {
|
||||
if (person) {
|
||||
console.log(person);
|
||||
res.sendStatus(201);
|
||||
try {
|
||||
const event = (await req.datastore.get(req.datastore.key(['Event', eventId])))[0];
|
||||
|
||||
if (event) {
|
||||
if (person) {
|
||||
const currentTime = dayjs().unix();
|
||||
|
||||
// If password
|
||||
let hash = null;
|
||||
if (person.password) {
|
||||
hash = await bcrypt.hash(person.password, 10);
|
||||
}
|
||||
|
||||
const entity = {
|
||||
key: req.datastore.key('Person'),
|
||||
data: {
|
||||
name: person.name.trim(),
|
||||
password: hash,
|
||||
eventId: eventId,
|
||||
created: currentTime,
|
||||
availability: [],
|
||||
},
|
||||
};
|
||||
|
||||
await req.datastore.insert(entity);
|
||||
|
||||
res.sendStatus(201);
|
||||
} else {
|
||||
res.sendStatus(400);
|
||||
}
|
||||
} else {
|
||||
res.sendStatus(400);
|
||||
res.sendStatus(404);
|
||||
}
|
||||
} else {
|
||||
res.sendStatus(404);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
res.sendStatus(400);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,21 +1,19 @@
|
|||
module.exports = (req, res) => {
|
||||
module.exports = async (req, res) => {
|
||||
const { eventId } = req.params;
|
||||
|
||||
if (eventId) {
|
||||
res.send({
|
||||
id: 'event-name-4701240',
|
||||
name: 'Event name',
|
||||
eventCreated: 379642017932,
|
||||
timezone: '247',
|
||||
startTime: 0900,
|
||||
endTime: 1700,
|
||||
dates: [
|
||||
'26022021',
|
||||
'27022021',
|
||||
'28022021',
|
||||
],
|
||||
});
|
||||
} else {
|
||||
try {
|
||||
const event = (await req.datastore.get(req.datastore.key(['Event', eventId])))[0];
|
||||
|
||||
if (event) {
|
||||
res.send({
|
||||
id: eventId,
|
||||
...event,
|
||||
});
|
||||
} else {
|
||||
res.sendStatus(404);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
res.sendStatus(404);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,27 +1,19 @@
|
|||
module.exports = (req, res) => {
|
||||
module.exports = async (req, res) => {
|
||||
const { eventId } = req.params;
|
||||
|
||||
if (eventId) {
|
||||
try {
|
||||
const query = req.datastore.createQuery('Person').filter('eventId', eventId);
|
||||
let people = (await req.datastore.runQuery(query))[0];
|
||||
people = people.map(person => ({
|
||||
name: person.name,
|
||||
availability: person.availability,
|
||||
}));
|
||||
|
||||
res.send({
|
||||
people: [
|
||||
{
|
||||
name: 'Laura',
|
||||
password: null,
|
||||
eventId: 'event-name-4701240',
|
||||
availability: [
|
||||
[
|
||||
'START',
|
||||
'END',
|
||||
],
|
||||
[
|
||||
'START',
|
||||
'END',
|
||||
],
|
||||
],
|
||||
},
|
||||
],
|
||||
people,
|
||||
});
|
||||
} else {
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
res.sendStatus(404);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
32
crabfit-backend/routes/login.js
Normal file
32
crabfit-backend/routes/login.js
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
const bcrypt = require('bcrypt');
|
||||
|
||||
module.exports = async (req, res) => {
|
||||
const { eventId, personName } = req.params;
|
||||
const { person } = req.body;
|
||||
|
||||
try {
|
||||
const query = req.datastore.createQuery('Person')
|
||||
.filter('eventId', eventId)
|
||||
.filter('name', personName);
|
||||
let personResult = (await req.datastore.runQuery(query))[0][0];
|
||||
|
||||
if (personResult) {
|
||||
if (personResult.password) {
|
||||
const passwordsMatch = person && person.password && await bcrypt.compare(person.password, personResult.password);
|
||||
if (!passwordsMatch) {
|
||||
return res.status(401).send('Incorrect password');
|
||||
}
|
||||
}
|
||||
|
||||
res.send({
|
||||
name: personName,
|
||||
availability: personResult.availability,
|
||||
});
|
||||
} else {
|
||||
res.sendStatus(404);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
res.sendStatus(404);
|
||||
}
|
||||
};
|
||||
|
|
@ -1,9 +1,21 @@
|
|||
const package = require('../package.json');
|
||||
|
||||
module.exports = (req, res) => {
|
||||
module.exports = async (req, res) => {
|
||||
let eventCount = null;
|
||||
let personCount = null;
|
||||
|
||||
try {
|
||||
const query = req.datastore.createQuery(['__Stat_Kind__']);
|
||||
|
||||
eventCount = (await req.datastore.runQuery(query.filter('kind_name', 'Event')))[0].count;
|
||||
personCount = (await req.datastore.runQuery(query.filter('kind_name', 'Person')))[0].count;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
||||
res.send({
|
||||
eventCount: 0,
|
||||
personCount: 0,
|
||||
eventCount: eventCount || null,
|
||||
personCount: personCount || null,
|
||||
version: package.version,
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,18 +1,37 @@
|
|||
module.exports = (req, res) => {
|
||||
const { eventId, personId } = req.params;
|
||||
const bcrypt = require('bcrypt');
|
||||
|
||||
module.exports = async (req, res) => {
|
||||
const { eventId, personName } = req.params;
|
||||
const { person } = req.body;
|
||||
|
||||
if (eventId) {
|
||||
if (personId) {
|
||||
if (person) {
|
||||
res.send(person);
|
||||
try {
|
||||
const query = req.datastore.createQuery('Person')
|
||||
.filter('eventId', eventId)
|
||||
.filter('name', personName);
|
||||
let personResult = (await req.datastore.runQuery(query))[0][0];
|
||||
|
||||
if (personResult) {
|
||||
if (person && person.availability) {
|
||||
if (personResult.password) {
|
||||
const passwordsMatch = person.password && await bcrypt.compare(person.password, personResult.password);
|
||||
if (!passwordsMatch) {
|
||||
return res.status(401).send('Incorrect password');
|
||||
}
|
||||
}
|
||||
|
||||
personResult.availability = person.availability;
|
||||
|
||||
await req.datastore.upsert(personResult);
|
||||
|
||||
res.sendStatus(200);
|
||||
} else {
|
||||
res.sendStatus(400);
|
||||
}
|
||||
} else {
|
||||
res.sendStatus(404);
|
||||
}
|
||||
} else {
|
||||
res.sendStatus(404);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
res.sendStatus(400);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue