// src/lib/content/board.ts — pure board grouping + due helpers.
import type { ContentStatus } from "@/lib/db/domain-schema";
import type { ContentItem } from "./types";
import { CONTENT_STATUSES } from "./types";

/** Group items into the 5 ordered status columns; within a column, earliest due
 *  first (nulls last), then newest created. */
export function groupByStatus(
  items: ContentItem[],
): { status: ContentStatus; items: ContentItem[] }[] {
  return CONTENT_STATUSES.map((status) => ({
    status,
    items: items
      .filter((i) => i.status === status)
      .sort((a, b) => {
        const da = a.dueDate ?? "9999-12-31";
        const db = b.dueDate ?? "9999-12-31";
        if (da !== db) return da < db ? -1 : 1;
        return a.createdAt < b.createdAt ? 1 : -1;
      }),
  }));
}

/** A due date strictly before today (date-only compare). */
export function isOverdue(dueDate: string | null, nowIso: string): boolean {
  if (!dueDate) return false;
  return dueDate.slice(0, 10) < nowIso.slice(0, 10);
}
