package incheon.ags.mrb.style.web.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.ToString;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.time.LocalDateTime;

/**
 * 레시피 스타일 응답 DTO
 * - 클라이언트에게 반환할 때 사용 (작성자/수정자 정보 제외)
 */
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(description = "레시피 스타일 응답 정보")
public class RecipeStyleDTO {

    @Schema(description = "스타일 ID", example = "1")
    private Long styleId;

    @Schema(description = "스타일명", example = "point_style_01")
    private String styleNm;

    @Schema(description = "스타일 서비스명", example = "geoserver_style_point")
    private String styleSrvcNm;

    @Schema(description = "스타일 타입 코드 (S: Single, G: Graduated, C: Categorized)", example = "S")
    private String styleTypeCd;

    @Schema(description = "공간 타입", example = "POINT")
    private String spceTy;

    @Schema(description = "최초등록일시", example = "2024-12-19T10:25:00")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime frstRegDt;

    @Schema(description = "최종수정일시", example = "2024-12-19T10:30:00")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastMdfcnDt;

    @Schema(description = "아이콘 정보 (JSONB)", example = "{\"0\": \"36\"}")
    private String iconInfo;

    @Schema(description = "읽기 전용 여부 (D 타입 스타일 전용)", example = "true")
    private Boolean readonly;
}
