aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared/queues.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/shared/queues.ts')
-rw-r--r--packages/shared/queues.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/packages/shared/queues.ts b/packages/shared/queues.ts
index 624f2bca..571df568 100644
--- a/packages/shared/queues.ts
+++ b/packages/shared/queues.ts
@@ -3,6 +3,7 @@ import { buildDBClient, migrateDB, SqliteQueue } from "liteque";
import { z } from "zod";
import serverConfig from "./config";
+import { zRuleEngineEventSchema } from "./types/rules";
const QUEUE_DB_PATH = path.join(serverConfig.dataDir, "queue.db");
@@ -193,3 +194,30 @@ export async function triggerWebhook(
operation,
});
}
+
+// RuleEgine worker
+export const zRuleEngineRequestSchema = z.object({
+ bookmarkId: z.string(),
+ events: z.array(zRuleEngineEventSchema),
+});
+export type ZRuleEngineRequest = z.infer<typeof zRuleEngineRequestSchema>;
+export const RuleEngineQueue = new SqliteQueue<ZRuleEngineRequest>(
+ "rule_engine_queue",
+ queueDB,
+ {
+ defaultJobArgs: {
+ numRetries: 1,
+ },
+ keepFailedJobs: false,
+ },
+);
+
+export async function triggerRuleEngineOnEvent(
+ bookmarkId: string,
+ events: z.infer<typeof zRuleEngineEventSchema>[],
+) {
+ await RuleEngineQueue.enqueue({
+ events,
+ bookmarkId,
+ });
+}