import type { BoardItem } from '../types/boardItem';

// src/utils.ts
export type ErrorWithMessage = {
  message: string;
};

export function isErrorWithMessage(error: unknown): error is ErrorWithMessage {
  return (
    typeof error === 'object' &&
    error !== null &&
    'message' in error &&
    typeof (error as Record<string, unknown>).message === 'string'
  );
}

export function toErrorWithMessage(maybeError: unknown): ErrorWithMessage {
  if (isErrorWithMessage(maybeError)) return maybeError;

  try {
    return new Error(JSON.stringify(maybeError));
  } catch {
    // fallback in case there's an error stringifying the maybeError
    // like with circular references for example.
    return new Error(String(maybeError));
  }
}
export function isValidBoardItem(
  data: Record<string, unknown>,
): data is Omit<BoardItem, 'docId'> {
  return (
    typeof data.userId === 'string' &&
    typeof data.title === 'string' &&
    typeof data.description === 'string' &&
    typeof data.created !== 'undefined'
  );
}
