/**
 * 선박 신호 API
 * 참조: mda-react-front/src/api/query.ts - getAllSignals()
 */

import { parsePipeMessage, rowToShipObject } from '../common/stompClient';

/**
 * 12분 이내 전체 선박 신호 조회
 * STOMP 구독 전에 호출하여 초기 선박 데이터 로드
 *
 * @returns {Promise<Array>} 선박 데이터 배열
 */
export async function fetchAllSignals() {
  try {
    const response = await fetch('/signal-api/all/12');

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }

    const result = await response.json();

    // API 응답 구조: { data: [...] } 또는 직접 배열
    const rawData = result?.data || result || [];

    if (!Array.isArray(rawData)) {
      console.warn('[fetchAllSignals] Invalid response format:', result);
      return [];
    }

    // 각 행을 선박 객체로 변환
    const ships = rawData.map((row) => {
      // row가 문자열이면 파이프로 파싱, 배열이면 그대로 사용
      const parsed = typeof row === 'string' ? parsePipeMessage(row) : row;
      return rowToShipObject(parsed);
    });

    // 좌표가 있는 선박만 필터링
    const validShips = ships.filter(s => s.longitude && s.latitude);

    console.log(`[fetchAllSignals] Loaded ${validShips.length}/${ships.length} ships (with coords)`);

    return validShips;
  } catch (error) {
    console.error('[fetchAllSignals] Error:', error);
    return [];
  }
}

export default fetchAllSignals;
