Refactored maps API. Added ability to seacrh by mapper.

This commit is contained in:
BurnyLlama 2021-10-11 19:49:53 +02:00
parent 0bafd5e4a6
commit 5fbcc2cc68

View File

@ -5,31 +5,55 @@ const mapApi = Router()
mapApi.get( mapApi.get(
'/count', '/count',
async (req, res) => { (req, res) => {
const mapAmount = await Level.find({}).count() Level.find({}).count().then(
mapAmount => {
res.json({ res.json({
success: true, success: true,
response: mapAmount response: mapAmount
}) })
}
)
} }
) )
mapApi.get( mapApi.get(
'/get/:map', '/get/:map',
async (req, res) => { (req, res) => {
const map = await Level.findOne({ name: req.params.map }) Level.findOne({ name: req.params.map }).then(
map => {
if (!map)
return res.json({
success: false,
response: "No map found!"
})
res.json({
success: true,
response: map
})
}
)
}
)
if (!map) mapApi.get(
return res.json({ '/category/:category',
success: false, (req, res) => {
response: "No map found!" Level.find({ category: req.params.category }).then(
}) maps => {
if (!maps[0])
res.json({ return res.json({
success: true, success: false,
response: map response: "Invalid category name!"
}) })
res.json({
success: true,
response: maps
})
}
)
} }
) )
@ -46,23 +70,26 @@ mapApi.get(
const sort = req.query.sort ?? 'name' const sort = req.query.sort ?? 'name'
const order = req.query.order === "desc" ? -1 : 1 const order = req.query.order === "desc" ? -1 : 1
const page = req.query.page ?? 1 const page = req.query.page ?? 1
const filter = req.query.byMapper ? { mapper: { $regex: name, $options: 'i' }} : { name: { $regex: name, $options: 'i' }}
const pageCount = Math.ceil((await Level.find({ name: { $regex: name, $options: 'i' }}).count()) / 20) const pageCount = Math.ceil((await Level.find({ name: { $regex: name, $options: 'i' }}).count()) / 20)
const maps = await Level.find({ name: { $regex: name, $options: 'i' }}).sort([[sort, order]]).limit(20).skip((page - 1) * 20)
if (!maps[0]) Level.find(filter).sort([[sort, order]]).limit(20).skip((page - 1) * 20).then(
return res.json({ maps => {
success: false, if (!maps[0])
response: "No maps found!" return res.json({
}) success: false,
response: "No maps found!"
res.json({ })
success: true,
response: { res.json({
pageCount, success: true,
maps response: {
pageCount,
maps
}
})
} }
}) )
} }
) )