← back to Homesonspec

apps/workers/src/index.ts

26 lines

import { work } from "@homesonspec/shared";
import { meridianHomesAdapter } from "@homesonspec/collector-meridian-homes";
import { runPipeline } from "./pipeline";

/**
 * Queue-backed worker daemon (pg-boss). Stages stay pure functions; this
 * process merely subscribes to job names and invokes them. Scheduling of
 * refresh jobs per source-registry intervals lands with live sources.
 */
const ADAPTERS = { [meridianHomesAdapter.key]: meridianHomesAdapter };

async function main() {
  await work<{ adapterKey: string }>("pipeline.run", async ({ adapterKey }) => {
    const adapter = ADAPTERS[adapterKey];
    if (!adapter) throw new Error(`unknown adapter ${adapterKey}`);
    const summary = await runPipeline(adapter);
    console.log(`[pipeline.run] ${adapterKey}:`, JSON.stringify(summary));
  });
  console.log("workers: subscribed to pipeline.run");
}

main().catch((error) => {
  console.error(error);
  process.exit(1);
});