a cache for slack profile pictures and emojis

feat: add reset endpoint

Changed files
+39 -4
src
+12 -4
src/cache.ts
···
* Purges all items from the cache
* @returns int indicating number of items purged
*/
-
async purgeAll(): Promise<number> {
-
const result = this.db.run("DELETE FROM users", [Date.now()]);
-
const result2 = this.db.run("DELETE FROM emojis", [Date.now()]);
+
async purgeAll(): Promise<{
+
message: string;
+
users: number;
+
emojis: number;
+
}> {
+
const result = this.db.run("DELETE FROM users");
+
const result2 = this.db.run("DELETE FROM emojis");
if (this.onEmojiExpired) {
if (result2.changes > 0) {
···
}
}
-
return result.changes + result2.changes;
+
return {
+
message: "Cache purged",
+
users: result.changes,
+
emojis: result2.changes,
+
};
}
/**
+27
src/index.ts
···
}),
},
)
+
.post(
+
"/reset",
+
async ({ headers, set }) => {
+
if (headers.authorization !== `Bearer ${process.env.BEARER_TOKEN}`) {
+
set.status = 401;
+
return "Unauthorized";
+
}
+
+
return await cache.purgeAll();
+
},
+
{
+
tags: ["The Cache!"],
+
headers: t.Object({
+
authorization: t.String({
+
default: "Bearer <token>",
+
}),
+
}),
+
response: {
+
200: t.Object({
+
message: t.String(),
+
users: t.Number(),
+
emojis: t.Number(),
+
}),
+
401: t.String({ default: "Unauthorized" }),
+
},
+
},
+
)
.listen(process.env.PORT ?? 3000);
console.log(