package com.eactive.eai.rms.onl.manage.authserver.client;

import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 개발자포탈 정보 반영 결과 DTO
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SyncResult {

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

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

    /**
     * 반영 액션 타입
     */
    private SyncAction action;

    /**
     * 반영 대상 API 목록 (ClientEntity에 등록된 전체 API)
     */
    private List<String> targetApis;

    /**
     * 반영 대상 API 개수
     */
    private int targetApiCount;

    /**
     * 반영된 API 목록 (성공한 경우)
     */
    private List<String> syncedApis;

    /**
     * 반영된 API 개수
     */
    private int syncedApiCount;

    /**
     * 존재하지 않는 API 목록 (SKIPPED_INVALID_API인 경우, 사유: APIGW에 미존재)
     */
    private List<String> invalidApis;

    /**
     * 자동 생성된 API Spec 목록 (PTL_API_SPEC_INFO에 없어서 새로 생성된 API)
     */
    private List<String> createdApiSpecs;

    /**
     * 자동 생성된 API Spec 개수
     */
    private int createdApiSpecCount;

    /**
     * 반영 액션 타입
     */
    public enum SyncAction {
        /**
         * 신규 생성
         */
        INSERTED,

        /**
         * 기존 데이터 업데이트
         */
        UPDATED,

        /**
         * orgId 없어서 건너뜀
         */
        SKIPPED_NO_ORG,

        /**
         * 유효하지 않은 API 존재로 건너뜀
         */
        SKIPPED_INVALID_API,

        /**
         * 오류 발생
         */
        ERROR
    }
}
