Add a simple searching function for maps
This commit is contained in:
parent
69313e86c7
commit
8fb6047dfb
|
@ -2,7 +2,7 @@ import { sqlite } from './init.js'
|
||||||
|
|
||||||
const entriesPerPage = process.env.ENTRIES_PER_PAGE ?? 50
|
const entriesPerPage = process.env.ENTRIES_PER_PAGE ?? 50
|
||||||
|
|
||||||
function simpleSanitize(str) {
|
export function simpleSanitize(str) {
|
||||||
return String(str).replace(/\s/g, "")
|
return String(str).replace(/\s/g, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { sqlite } from './init.js'
|
import { sqlite } from './init.js'
|
||||||
|
import { simpleSanitize } from './searcher.js'
|
||||||
/**
|
/**
|
||||||
* This function checks if a player exists
|
* This function checks if a player exists
|
||||||
*
|
*
|
||||||
|
@ -347,6 +347,35 @@ export function graphMap(map) {
|
||||||
|
|
||||||
return array
|
return array
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* This searches the DB for maps
|
||||||
|
*
|
||||||
|
* @param {string} query The query to search for
|
||||||
|
* @param {array} categories Which categories to be searched ["Novice", "Insane"]
|
||||||
|
* @param {array} stars Only include maps with a specific amount of stars [1, 5]
|
||||||
|
* @param {string} sortBy What to sort after
|
||||||
|
* @param {string} order "ASC" | "DESC"
|
||||||
|
*
|
||||||
|
* @returns {array} Returns an array of all maps found
|
||||||
|
*/
|
||||||
|
export function searchMap(query, categories, stars, sortBy, order) {
|
||||||
|
const categoriesJoined = categories.join(',')
|
||||||
|
const starsJoined = stars.join(',')
|
||||||
|
|
||||||
|
let output = []
|
||||||
|
const maps = sqlite.prepare(`
|
||||||
|
SELECT * FROM maps WHERE map LIKE '%${query}%'
|
||||||
|
AND ',' || ? || ',' LIKE '%,' || category || ',%'
|
||||||
|
AND ',' || ? || ',' LIKE '%,' || stars || ',%'
|
||||||
|
ORDER BY ? ${simpleSanitize(order)}`)
|
||||||
|
.all(categoriesJoined, starsJoined, sortBy)
|
||||||
|
|
||||||
|
for(const map of maps) {
|
||||||
|
output.push(prettyifyMap(map))
|
||||||
|
}
|
||||||
|
console.log(output)
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
playerExists,
|
playerExists,
|
||||||
finishedMaps,
|
finishedMaps,
|
||||||
|
@ -358,6 +387,7 @@ export default {
|
||||||
mapCategory,
|
mapCategory,
|
||||||
allMaps,
|
allMaps,
|
||||||
mapExists,
|
mapExists,
|
||||||
|
searchMap,
|
||||||
leaderboardRace,
|
leaderboardRace,
|
||||||
leaderboardTeamrace,
|
leaderboardTeamrace,
|
||||||
categoryExists,
|
categoryExists,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user