mirror of
https://github.com/muerwre/orchidmap-front.git
synced 2025-04-25 19:16:41 +07:00
backend: route save / restore
This commit is contained in:
parent
032821329b
commit
d932fcb287
17 changed files with 163 additions and 43 deletions
23
backend/routes/route/get.js
Normal file
23
backend/routes/route/get.js
Normal 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,
|
||||
}
|
||||
});
|
||||
};
|
||||
|
43
backend/routes/route/post.js
Normal file
43
backend/routes/route/post.js
Normal 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
|
||||
});
|
||||
};
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue