package com.eactive.eai.rms.common.dbconsole.dto;

import java.util.List;
import java.util.Map;

import lombok.Data;

/**
 * SQL 실행 결과 DTO
 */
@Data
public class SqlResultDto {

    /**
     * 성공 여부
     */
    private boolean success;

    /**
     * 메시지
     */
    private String message;

    /**
     * 세션 ID
     */
    private String sessionId;

    /**
     * 쿼리 타입 (SELECT, INSERT, UPDATE, DELETE, DDL, ERROR, MULTI)
     */
    private String queryType;

    /**
     * 컬럼 목록 (SELECT 결과)
     */
    private List<String> columns;

    /**
     * 컬럼 메타정보 (SELECT 결과)
     */
    private List<ColumnInfoDto> columnMetas;

    /**
     * 데이터 행 (SELECT 결과)
     */
    private List<Map<String, Object>> rows;

    /**
     * 영향받은 행 수 (INSERT, UPDATE, DELETE)
     */
    private Integer affectedRows;

    /**
     * 실행 시간 (ms)
     */
    private Long executionTime;

    /**
     * 트랜잭션 활성 상태
     */
    private boolean transactionActive;

    /**
     * 성공 결과 생성
     */
    public static SqlResultDto success(String message) {
        SqlResultDto result = new SqlResultDto();
        result.setSuccess(true);
        result.setMessage(message);
        return result;
    }

    /**
     * 오류 결과 생성
     */
    public static SqlResultDto error(String message) {
        SqlResultDto result = new SqlResultDto();
        result.setSuccess(false);
        result.setMessage(message);
        return result;
    }
}
