package incheon.ags.mrb.analysis.vo.request;

import com.all4land.sa.option.AttributeJoinMode;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotBlank;
import java.util.Map;

@Getter
@Setter
@Schema(description = "병합 요청")
public class MergeRequestDTO extends AbstractBoundaryAnalysisRequestDTO {

    @Schema(description = "각 피처에 원본 레이어 정보를 추가할지 여부")
    Boolean addSourceField = false;

    @Schema(description = "두 입력의 필드를 union할지 여부 (true이면 모든 필드를 결합, false이면 공통 필드만 사용)")
    Boolean unionFields = true;

    @Schema(description = "입력 피처의 필드 이름을 출력 피처의 필드 이름으로 매핑하는 Map (예: {'OLD_NAME': 'NEW_NAME'})")
    Map<@NotBlank String, @NotBlank String> fieldMappings;

    @Override
    protected Object jsonPart() {
        return new Object() {
            public final Boolean addSourceField = MergeRequestDTO.this.addSourceField;
            public final Boolean unionFields = MergeRequestDTO.this.unionFields;
            public final Map<String, String> fieldMappings = MergeRequestDTO.this.fieldMappings;
        };
    }
}
