f0bm/src/inc/routes/search.mjs
2022-05-06 14:20:11 +02:00

45 lines
1.1 KiB
JavaScript

import db from "../sql.mjs";
import lib from "../lib.mjs";
import search from "../routeinc/search.mjs";
export default (router, tpl) => {
router.get(/^\/search(\/)?$/, lib.auth, async (req, res) => {
let ret;
let tag = req.url.qs?.tag;
if(Object.keys(req.url.qs).length > 0) {
let rows;
if(tag.startsWith('src:')) {
tag = tag.substring(4);
ret = await db`
select *
from "items"
where src ilike ${'%' + tag + '%'}
limit 500
`;
}
else {
rows = await db`
select "items".id, "items".username, "items".mime, "tags".tag
from "tags"
left join "tags_assign" on "tags_assign".tag_id = "tags".id
left join "items" on "items".id = "tags_assign".item_id
where "tags".tag ilike ${'%' + tag + '%'}
limit 500
`;
ret = search(rows, tag);
}
}
res.reply({
body: tpl.render("search", {
result: ret,
totals: await lib.countf0cks(),
searchstring: tag,
session: req.session,
tmp: null
}, req)
});
});
};