summaryrefslogtreecommitdiff
path: root/app/lib/worker.server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'app/lib/worker.server.ts')
-rw-r--r--app/lib/worker.server.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/app/lib/worker.server.ts b/app/lib/worker.server.ts
new file mode 100644
index 0000000..f71ea40
--- /dev/null
+++ b/app/lib/worker.server.ts
@@ -0,0 +1,32 @@
+import { claimNextParseJob, completeParseJob, failParseJob, listBands } from "./db.server";
+import { parseLiveInfoBands } from "./claude.server";
+
+const POLL_INTERVAL_MS = 2000;
+
+let started = false;
+
+function startWorker() {
+ if (started) return;
+ started = true;
+
+ let busy = false;
+
+ setInterval(async () => {
+ if (busy) return;
+ const job = claimNextParseJob();
+ if (!job) return;
+
+ busy = true;
+ try {
+ const bands = listBands();
+ const matches = await parseLiveInfoBands(job.input_text, bands);
+ completeParseJob(job.id, JSON.stringify(matches));
+ } catch (e) {
+ failParseJob(job.id, e instanceof Error ? e.message : "不明なエラー");
+ } finally {
+ busy = false;
+ }
+ }, POLL_INTERVAL_MS);
+}
+
+startWorker();