backend: route save / restore

This commit is contained in:
muerwre 2018-11-30 13:49:03 +07:00
parent 032821329b
commit d932fcb287
17 changed files with 163 additions and 43 deletions

View file

@ -1,16 +1,13 @@
const { User } = require('../../models/User');
const { User } = require('../../models');
const { generateGuest, generateRandomUrl } = require('./guest');
module.exports = async (req, res) => {
const { id, token } = req.query;
console.log(req.query);
console.log('SEARCHING', id, token);
const user = await User.findOne({ _id: id, token });
const random_url = await generateRandomUrl();
if (user) {
console.log('FOUND');
return res.send({ success: true, ...user.toObject(), id: user._id, random_url });
}

View file

@ -1,5 +1,5 @@
const { genRandomSequence } = require('../../utils/gen');
const { User } = require('../../models/User');
const { User } = require('../../models');
const generateGuestToken = () => {
const _id = `guest:${genRandomSequence(16)}`;

View file

@ -1,4 +1,4 @@
const { User } = require('../../models/User');
const { User } = require('../../models');
module.exports = (req, res) => User.find((err, articles) => {
if (!err) return res.send(articles);

View file

@ -1,4 +1,4 @@
const { User } = require('../../../models/User');
const { User } = require('../../../models');
const axios = require('axios');
const { generateUser } = require('../guest');
const { STRINGS } = require('../../../config/strings');

10
backend/routes/route.js Normal file
View file

@ -0,0 +1,10 @@
const express = require('express');
const post = require('./route/post');
const get = require('./route/get');
const router = express.Router();
router.post('/', post);
router.get('/', get);
module.exports = router;

View file

@ -0,0 +1,23 @@
const { User, Route } = require('../../models');
module.exports = async (req, res) => {
const { query: { id, token, name } } = req;
if (!name) return res.send({ success: false, mode: 'not_found_1' });
const exists = await Route.findOne({ _id: name }).populate('owner');
if (!exists) return res.send({ success: false, mode: 'not_found_2' });
const data = exists.toObject();
return res.send({
success: true,
...data,
address: exists._id,
owner: {
...data.owner,
id: data.owner._id,
}
});
};

View file

@ -0,0 +1,43 @@
const { User, Route } = require('../../models');
const { parseRoute, parseStickers, parseString, parseNumber } = require('../../utils/parse');
module.exports = async (req, res) => {
const { body, body: { id, token, force } } = req;
const owner = await User.findOne({ _id: id, token });
if (!owner) return res.send({ success: false, reason: 'Unauthorized' });
const title = parseString(body.title, 32);
const address = parseString(body.address, 32);
const route = parseRoute(body.route);
const stickers = parseStickers(body.stickers);
const logo = parseString(body.logo, 16);
const distance = parseNumber(body.distance, 0, 1000);
if ((!route || route.length <= 0) && (!stickers || stickers.length <= 0)) {
return res.send({ success: false, mode: 'empty' });
}
const exists = await Route.findOne({ _id: address }).populate('owner');
if (exists && exists.owner._id !== id) return res.send({ success: false, mode: 'exists' });
if (exists && !force) return res.send({ success: false, mode: 'overwriting' });
if (exists) {
exists.set({ title, route, stickers, logo, distance }).save();
return res.send({
success: true, title, address, route, stickers, mode: 'overwrited'
});
}
await Route.create({
_id: address, title, route, stickers, owner, logo, distance,
});
return res.send({
success: true, title, address, route, stickers
});
};