Added API for maps...

This commit is contained in:
BurnyLlama 2021-10-04 19:36:07 +02:00
parent d7cb68906b
commit 6080b0de4f

69
api/maps.js Normal file
View File

@ -0,0 +1,69 @@
import { Router } from 'express'
import Level from '../schemas/Level.js'
const mapApi = Router()
mapApi.get(
'/count',
async (req, res) => {
const mapAmount = await Level.find({}).count()
res.json({
success: true,
response: mapAmount
})
}
)
mapApi.get(
'/get/:map',
async (req, res) => {
const map = await Level.findOne({ name: req.params.map })
if (!map)
return res.json({
success: false,
response: "No map found!"
})
res.json({
success: true,
response: map
})
}
)
mapApi.get(
'/search',
async (req, res) => {
if (!req.query.q)
return res.json({
success: false,
response: "No query ('host/path?q=query') provided!"
})
const name = req.query.q
const sort = req.query.sort ?? 'name'
const order = req.query.order === "desc" ? -1 : 1
const page = req.query.page ?? 1
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])
return res.json({
success: false,
response: "No maps found!"
})
res.json({
success: true,
response: {
pageCount,
maps
}
})
}
)
export default mapApi