import { badRequest } from './errors';

/** Express 5 params can be string | string[]; normalize to a single string. */
export function param(value: string | string[] | undefined, name = 'id'): string {
  const v = Array.isArray(value) ? value[0] : value;
  if (!v) throw badRequest(`Missing route parameter: ${name}`);
  return v;
}

const UUID_RE =
  /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;

export function isUuid(value: string): boolean {
  return UUID_RE.test(value);
}

/** Lookup by UUID id or human code without casting codes into @db.Uuid columns. */
export function idOrCodeWhere(id: string): { id: string } | { code: string } {
  return isUuid(id) ? { id } : { code: id };
}
