Merged in feature/redis-api-get-all-keys-endopoint (pull request #3306)

feature: Add getAllKeys endpoint

* feature: Add getAllKeys endpoint

* rename DELETE_BATCH_SIZE to SCAN_BATCH_SIZE


Approved-by: Anton Gunnarsson
This commit is contained in:
Joakim Jäderberg
2025-12-10 09:36:53 +00:00
parent 7eb74ea239
commit fde77a06ce
6 changed files with 128 additions and 59 deletions
+22
View File
@@ -6,6 +6,7 @@ import { queueDelete, queueDeleteMultiple } from "@/services/redis/queueDelete";
import { loggerModule } from "@/utils/logger";
import { truncate } from "@/utils/truncate";
import { validateKey } from "@/utils/validateKey";
import { getAllKeys } from "@/services/redis/getAllKeys";
const QUERY_TYPE = t.Object({ key: t.String({}) });
const DELETEMULTIPLE_BODY_TYPE = t.Object({
@@ -47,6 +48,27 @@ export const cacheRoutes = new Elysia({ prefix: "/cache" })
response: { 200: t.Object({ data: t.Any() }), 404: t.String() },
},
)
.get(
"/all",
async ({ query: { key } }) => {
key = validateKey(key);
const { matchedKeys, totalKeys } = await getAllKeys([`*${key}*`], {
caseInsensitive: true,
});
return { data: matchedKeys.toSorted(), totalKeys };
},
{
query: QUERY_TYPE,
response: {
200: t.Object({
data: t.Array(t.String()),
totalKeys: t.Number(),
}),
400: t.String(),
},
},
)
.put(
"/",
async ({ query: { key }, body, status, set }) => {