routes and stuff

This commit is contained in:
Flummi
2021-12-06 10:21:11 +01:00
parent 43665884f6
commit f7313d864c
9 changed files with 216 additions and 151 deletions

View File

@@ -1,15 +1,33 @@
import sql from "../sql.mjs";
import lib from "../lib.mjs";
const allowedMimes = [ "audio", "image", "video", "%" ];
const allowedMimes = [ "audio", "image", "video" ];
export default (router, tpl) => {
router.get(/^\/random(\/image|\/video|\/audio)?$/, async (req, res) => {
const tmp = lib.getMode(req.session.mode ?? 0);
const mime = (allowedMimes.filter(n => req.url.split[1]?.startsWith(n))[0] ? req.url.split[1] : "") + "%";
const rows = await sql("items").select("id").whereRaw(tmp).andWhere("mime", "like", mime).orderByRaw("rand()").limit(1);
router.get(/^\/random\/?(?:user\/(?<user>[a-zA-Z0-9\[\]\-\_\{\}\\`\|]+))?(?:\/(?<mime>image|audio|video))?$/, async (req, res) => {
const user = req.params.user ?? null;
const mime = (req.params.mime ?? "");
const smime = allowedMimes.includes(mime) ? mime + "/%" : mime === "" ? "%" : "%";
const modequery = mime == "audio" ? lib.getMode(0) : lib.getMode(req.session.mode ?? 0);
if(user && (await sql("items").where("username", "like", user).count("* as total"))[0].total === 0)
return res.end("200 - user not found lol");
const rows = await sql("items")
.select("id")
.whereRaw(modequery)
.andWhere("mime", "like", smime)
.andWhere("username", "like", user ? user : "%")
.orderByRaw("rand()")
.limit(1);
if(rows.length === 0)
return res.end("nope");
const link = lib.genLink({ user, mime });
res.redirect(`/${req.url.split[1] ? req.url.split[1] + "/" : ""}${rows[0].id}`);
res.redirect(`/${link}${link.length != 0 ? "/": ""}${rows[0].id}`);
});
return router;
};