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

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;

/**
 * 레시피 공유 그룹 생성/수정 DTO
 * - 그룹 정보와 멤버 목록을 함께 받음
 */
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Schema(description = "레시피 공유 그룹 정보")
public class RecipeShrnGroupDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 그룹 ID (수정 시에만 사용) */
    @Schema(description = "그룹 ID", example = "1")
    private Integer groupId;

    /** 그룹명 */
    @NotBlank(message = "그룹명은 필수입니다")
    @Size(max = 100, message = "그룹명은 100자를 초과할 수 없습니다")
    @Schema(description = "그룹명", example = "개발팀", required = true)
    private String groupName;

    /** 그룹 설명 */
    @Schema(description = "그룹 설명", example = "개발팀 그룹")
    private String description;

    /** 그룹 멤버 수 (조회 시에만 사용) */
    @Schema(description = "그룹 멤버 수", example = "5")
    private Integer memberCnt;

    /** 멤버 ID 목록 (저장용) */
    @Schema(description = "멤버 ID 목록", example = "[\"user01\", \"user02\", \"user03\"]")
    private List<String> memberIds;

    /** 멤버 이름 목록 (표시용) */
    @Schema(description = "멤버 이름 목록", example = "[\"홍길동\", \"김철수\", \"이영희\"]")
    private List<String> members;
}
