Files
FrozenFriendsYume/packages/backend/built/misc/webhook-cache.js
T
2026-07-26 18:25:37 +09:00

44 lines
1.3 KiB
JavaScript

import { Webhooks } from "../models/index.js";
import { subscriber } from "../db/redis.js";
let webhooksFetched = false;
let webhooks = [];
export async function getActiveWebhooks() {
if (!webhooksFetched) {
webhooks = await Webhooks.findBy({
active: true
});
webhooksFetched = true;
}
return webhooks;
}
subscriber.on("message", async (_, data)=>{
const obj = JSON.parse(data);
if (obj.channel === "internal") {
const { type, body } = obj.message;
switch(type){
case "webhookCreated":
if (body.active) {
webhooks.push(body);
}
break;
case "webhookUpdated":
if (body.active) {
const i = webhooks.findIndex((a)=>a.id === body.id);
if (i > -1) {
webhooks[i] = body;
} else {
webhooks.push(body);
}
} else {
webhooks = webhooks.filter((a)=>a.id !== body.id);
}
break;
case "webhookDeleted":
webhooks = webhooks.filter((a)=>a.id !== body.id);
break;
default:
break;
}
}
});