mirror of
https://github.com/ReCloudStudio/WebHooker.git
synced 2026-09-23 00:21:28 +00:00
refactor(core): message tracker abstraction and formatter plugin registry
This commit is contained in:
parent
486f38365f
commit
eaec039ad4
9 changed files with 361 additions and 90 deletions
24
server/lib/lib/message-tracker.ts
Normal file
24
server/lib/lib/message-tracker.ts
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
export interface MessageTracker {
|
||||
get(eventId: string, targetId: string): Promise<string | null>;
|
||||
set(eventId: string, targetId: string, messageId: string): Promise<void>;
|
||||
delete(eventId: string, targetId: string): Promise<void>;
|
||||
}
|
||||
|
||||
const MESSAGE_KEY_TTL_SECONDS = 604800;
|
||||
|
||||
export function kvMessageTracker(kv: KVNamespace): MessageTracker {
|
||||
const key = (eventId: string, targetId: string): string => `msg:${eventId}:${targetId}`;
|
||||
return {
|
||||
async get(eventId: string, targetId: string): Promise<string | null> {
|
||||
return kv.get(key(eventId, targetId));
|
||||
},
|
||||
async set(eventId: string, targetId: string, messageId: string): Promise<void> {
|
||||
await kv.put(key(eventId, targetId), messageId, {
|
||||
expirationTtl: MESSAGE_KEY_TTL_SECONDS,
|
||||
});
|
||||
},
|
||||
async delete(eventId: string, targetId: string): Promise<void> {
|
||||
await kv.delete(key(eventId, targetId));
|
||||
},
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue