mirror of
https://github.com/Open-Argon/isotope-server.git
synced 2026-10-28 09:43:51 +00:00
39 lines
1.5 KiB
Plaintext
39 lines
1.5 KiB
Plaintext
import "server" as *
|
|
import "database" as *
|
|
import "url.ar" as url
|
|
import "bleach.ar" as bleach
|
|
import "render" as renderer
|
|
|
|
let search(req, res) = do
|
|
let acc = account.getByToken(req.cookies.get("token", ""))
|
|
let query = req.query.get("q", "")
|
|
let lowerQuery = query.lower()
|
|
let keys = packages.keys()
|
|
keys.sort()
|
|
let namedSearch = []
|
|
let descriptionSearch = []
|
|
let results = 0
|
|
for (i from 0 to keys.length) do
|
|
let name = keys[i]
|
|
let package = packages[name]
|
|
let element() = "<a href='/package?"+url.queryStr({name:name})+"'><h1>"+bleach.clean(name)+"</h1><p>"+bleach.clean(package.get("short-description",""))+"</p></a>"
|
|
if (lowerQuery in name.lower()) do
|
|
namedSearch.append(element())
|
|
results += 1
|
|
continue
|
|
else if (lowerQuery in package.get("description", "").lower()) do
|
|
descriptionSearch.append(element())
|
|
results += 1
|
|
continue
|
|
let keywords = package.get("keywords", [])
|
|
for (j from 0 to keywords.length) do
|
|
let keyword = keywords[j].strip()
|
|
if (keyword.lower() in lowerQuery) do
|
|
descriptionSearch.append(element())
|
|
results += 1
|
|
break
|
|
let render = []
|
|
render.extend(namedSearch)
|
|
render.extend(descriptionSearch)
|
|
res.renderTemplate("search.html", {query:query, numOfResults:results, results:render.join(""), navbar:renderer.navbar(acc)})
|
|
app.route("/search", null, search) |