From 08814ee6de1d9d7723012e5a30e4aafee58dcd00 Mon Sep 17 00:00:00 2001 From: Kai Niebes Date: Mon, 22 Jun 2026 16:32:01 +0200 Subject: [PATCH] Cologne Cave: Configurable file formats on route --- src/plugins/cologne-cave/router.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/plugins/cologne-cave/router.ts b/src/plugins/cologne-cave/router.ts index 6e9d94c..1f7f225 100644 --- a/src/plugins/cologne-cave/router.ts +++ b/src/plugins/cologne-cave/router.ts @@ -11,13 +11,17 @@ const cologneCaveRouter = new Elysia() .group('/cologne-cave-api', app => app.get( '/all-entities', - async ({ query: { limit, offset } }) => { + async ({ query: { limit, offset, format } }) => { + const formats = (format ?? 'glb') + .split(',') + .map(f => f.trim().toLowerCase()) + .filter(f => /^[a-z0-9]+$/.test(f)); + const regex = formats.length ? new RegExp(`\\.(${formats.join('|')})$`, 'i') : /\.glb$/i; const entities = await entityCollection .find({ 'online': true, 'finished': true, - // Does raw filename end with '.glb'? - 'processed.raw': { $regex: /\.glb$/i }, + 'processed.raw': { $regex: regex }, }) .skip(offset ?? 0) .limit(limit ?? Number.MAX_SAFE_INTEGER) @@ -43,6 +47,13 @@ const cologneCaveRouter = new Elysia() description: 'Offset for pagination', }), ), + format: t.Optional( + t.String({ + type: 'string', + description: + 'Comma-separated list of file formats to filter by (e.g. "obj,glb"). Defaults to "glb".', + }), + ), }), response: { 200: t.Any({