import { toIsoSqlUTC as coreToIsoSqlUTC, normalizeTime as coreNormalizeTime } from '../../../../../src/utils/datetime';

/**
 * Serializa una fecha en UTC al formato SQL ISO "YYYY-MM-DD HH:MM:SS[.SSS]".
 * Mantiene exactamente la semántica previa basada en toISOString().replace().
 */
export function toIsoSqlUTC(d: Date = new Date()): string {
  return coreToIsoSqlUTC(d);
}

/**
 * Normaliza una hora 'HH:mm'. Devuelve null si no es válida.
 */
export function normalizeTime(input: string | null | undefined): string | null {
  return coreNormalizeTime(input);
}

/**
 * Devuelve YYYY-MM-DD en UTC (útil para consultas por rango de fecha).
 */
export function ymdUTC(date: Date): string {
  const yyyy = String(date.getUTCFullYear()).padStart(4, '0');
  const mm = String(date.getUTCMonth() + 1).padStart(2, '0');
  const dd = String(date.getUTCDate()).padStart(2, '0');
  return `${yyyy}-${mm}-${dd}`;
}

/**
 * Suma meses en UTC preservando día (ajustado por desbordes de fin de mes por el propio motor).
 */
export function addMonthsUTC(date: Date, months: number): Date {
  const d = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
  d.setUTCMonth(d.getUTCMonth() + months);
  return d;
}
