/**
 * fixtures 版 `areaCompletions()` の絞り込み（指示書AC ★段階3★）。
 *
 * ★★`USE_FIXTURES` の true/false で件数が変わってはいけない★★（指示書AC 禁止事項6）。
 *   Prisma 版が SQL に降ろした条件（施設ID・日付1日ぶん）と ★同じ意味★ をここで再現します。
 *
 * ★絞り込み規則の「正」は `selectAreaRowsForLog()`（`lib/clean-logs/areas.ts`）★ —
 *   ここも Prisma 側もその ★写し★ です（指示書AC C-5）。
 *   ★★`selectAreaRowsForLog()` を外さないこと★★ — 外すと「SQL が絞りすぎた」ときに
 *   取り戻せなくなります（C-6 / C-5）。
 *
 * ★DBアクセスを混ぜない純粋関数★（テストから直接呼べるようにするため。
 * `lib/db/fixture-clean-logs.ts` と同じ流儀）。
 */
import type { AreaCompletionDbQuery, AreaCompletionRow } from "@/lib/types";

/**
 * ★日付の比較は文字列のまま行う★ — `AreaCompletionRow.date` は既に JST の
 * `YYYY-MM-DD`（`jstIsoFromDb()` の先頭10文字）なので、実行環境のタイムゾーンに依存しません
 * （`filterFixtureCleanLogs()` / `selectAreaRowsForLog()` と同じ作法）。
 * ★`new Date()` を挟むと、Prisma 版が壁時計値で絞っているのと基準がずれます★。
 */
export function filterFixtureAreaCompletions(
  rows: readonly AreaCompletionRow[],
  query: AreaCompletionDbQuery
): AreaCompletionRow[] {
  return rows.filter((row) => {
    // ★★`!== null` で分岐すること★★（`?` や `||` で書くと「指定なし」と混ざる。罠1と同じ形）
    if (query.facility_id !== null && row.facility_id !== query.facility_id) return false;
    if (query.date !== null && row.date !== query.date) return false;
    return true;
  });
}
