package com.kt.event.eventservice.application.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.Map;

/**
 * 이미지 편집 요청 DTO
 *
 * 선택된 이미지를 편집합니다.
 *
 * @author Event Service Team
 * @version 1.0.0
 * @since 2025-10-27
 */
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "이미지 편집 요청")
public class ImageEditRequest {

    @NotNull(message = "편집 유형은 필수입니다.")
    @Schema(description = "편집 유형", required = true, example = "TEXT_OVERLAY",
            allowableValues = {"TEXT_OVERLAY", "COLOR_ADJUST", "CROP", "FILTER"})
    private EditType editType;

    @NotNull(message = "편집 파라미터는 필수입니다.")
    @Schema(description = "편집 파라미터 (편집 유형에 따라 다름)", required = true,
            example = "{\"text\": \"20% 할인\", \"fontSize\": 48, \"color\": \"#FF0000\", \"position\": \"center\"}")
    private Map<String, Object> parameters;

    /**
     * 편집 유형
     */
    public enum EditType {
        TEXT_OVERLAY,  // 텍스트 오버레이
        COLOR_ADJUST,  // 색상 조정
        CROP,          // 자르기
        FILTER         // 필터 적용
    }
}
