import { BadRequestException } from '@nestjs/common';

/**
 * 把 query string 里的 ISO 时间字符串解析成 Date；空字符串 / undefined 返 undefined；
 * 解析失败抛 BadRequestException（code='invalid_query'），调用方无需手工校验。
 */
export function parseIsoOrUndefined(s: string | undefined): Date | undefined {
  if (!s) return undefined;
  const d = new Date(s);
  if (Number.isNaN(d.getTime())) {
    throw new BadRequestException({
      code: 'invalid_query',
      message: `时间格式不合法: ${s}`,
    });
  }
  return d;
}

/**
 * 把 query string 里的正整数字符串解析成 number；空字符串 / undefined 返 undefined；
 * 解析失败抛 BadRequestException（code='invalid_query'）。
 */
export function parsePositiveInt(s: string | undefined): number | undefined {
  if (!s) return undefined;
  const n = parseInt(s, 10);
  if (!Number.isFinite(n) || n < 1) {
    throw new BadRequestException({
      code: 'invalid_query',
      message: `数字参数不合法: ${s}`,
    });
  }
  return n;
}
