forked from f0ck/f0ckv2
45 lines
1.1 KiB
JavaScript
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)
|
|
});
|
|
});
|
|
};
|