import { Inject, Injectable, Logger, OnModuleInit } from "@nestjs/common";
import PgBoss from "pg-boss";
import { processSearchIndexJob, type SearchIndexJob } from "@slackwsh/messaging";
import { PG_BOSS } from "./boss.provider";

@Injectable()
export class SearchIndexProcessor implements OnModuleInit {
  private readonly logger = new Logger(SearchIndexProcessor.name);

  constructor(@Inject(PG_BOSS) private readonly boss: PgBoss) {}

  async onModuleInit() {
    await this.boss.work("search_index", async (jobs) => {
      for (const job of jobs) {
        const result = await processSearchIndexJob(job.data as SearchIndexJob);
    this.logger.debug(`search_index job ${job.id}: indexed=${result.indexed}`);
      }
    });
  }
}
