import { Op } from "sequelize";
import { initDb } from "@/lib/db";
import type { FillerLogicRule } from "@/types/filler";

/** Load skip/branching rules grouped by question — avoids nested include misses. */
export async function loadLogicRulesByQuestionIds(
  questionIds: string[]
): Promise<Map<string, FillerLogicRule[]>> {
  const map = new Map<string, FillerLogicRule[]>();
  if (questionIds.length === 0) return map;

  const { LogicRule } = initDb();
  const rows = await LogicRule.findAll({
    where: { questionId: { [Op.in]: questionIds } },
  });

  for (const r of rows) {
    const list = map.get(r.questionId) ?? [];
    list.push({
      id: r.id,
      conditionType: r.conditionType,
      conditionValue: r.conditionValue,
      action: r.action,
      targetQuestionId: r.targetQuestionId,
    });
    map.set(r.questionId, list);
  }

  return map;
}
