/**
 * @module types
 * @description ReportDesigner 전체에서 공유되는 도메인 타입 정의.
 * Context, Hook, 컴포넌트 전반에서 일관된 타입을 사용하기 위해 이 파일에 집중한다.
 */

import type { VisualDataSource } from "@/types/report";

/** 리포트 디자이너에서 관리하는 SQL 쿼리 단위 */
export interface ReportQuery {
  id: string;
  name: string;
  type: "MASTER" | "DETAIL";
  sqlQuery: string;
  parameters: string[];
  /** 외부 DB 연결 ID (null이면 내부 DB 사용) */
  externalConnectionId?: number | null;
  /** 비주얼 데이터 소스 빌더 UI 설정 원본 */
  visualDataSource?: VisualDataSource;
}

/** 쿼리 실행 결과 캐시 단위 */
export interface QueryResult {
  queryId: string;
  fields: string[];
  rows: Record<string, unknown>[];
}
