package com.caliverse.admin.domain.response;

import com.caliverse.admin.domain.entity.CraftingDict;
import com.caliverse.admin.domain.entity.ItemDict;
import com.caliverse.admin.domain.entity.metadata.*;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DictionaryResponse {
    private int status;

    private String result;
    @JsonProperty("data")
    private ResultData resultData;

    @Data
    @Builder
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class ResultData {

        @JsonProperty("item_list")
        private ItemList itemList;

        @JsonProperty("crafting_list")
        private CraftingList craftingList;

        @JsonProperty("brand_list")
        private List<MetaBrandData> brandList;

        @JsonProperty("ranking_list")
        private List<MetaRankingData> rankingList;

        @JsonProperty("battle_config_list")
        private List<MetaBattleConfigData> battleConfigList;

        @JsonProperty("battle_reward_list")
        private List<MetaBattleRewardData> battleRewardList;

        @JsonProperty("game_mode_list")
        private List<MetaGameModeData> gameModeList;

        @JsonProperty("event_action_list")
        private List<MetaEventActionScoreData> eventActionList;

        private String message;

        private int total;
        @JsonProperty("total_all")
        private int totalAll;
        @JsonProperty("page_no")
        private int pageNo;

    }

    @Data
    @Builder
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class ItemList {
        @JsonProperty("ko")
        private List<ItemDict> ko;

        @JsonProperty("en")
        private List<ItemDict> en;

        @JsonProperty("ja")
        private List<ItemDict> ja;
    }

    @Data
    @Builder
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class CraftingList {
        @JsonProperty("ko")
        private List<CraftingDict> ko;

        @JsonProperty("en")
        private List<CraftingDict> en;

        @JsonProperty("ja")
        private List<CraftingDict> ja;
    }


}
