package com.tasteby.util;

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * Standardized cuisine type taxonomy.
 */
public final class CuisineTypes {

    private CuisineTypes() {}

    public static final List<String> ALL = List.of(
            "한식|백반/한정식", "한식|국밥/해장국", "한식|찌개/전골/탕", "한식|삼겹살/돼지구이",
            "한식|소고기/한우구이", "한식|곱창/막창", "한식|닭/오리구이", "한식|족발/보쌈",
            "한식|회/횟집", "한식|해산물", "한식|분식", "한식|면", "한식|죽/죽집",
            "한식|순대/순대국", "한식|장어/민물", "한식|주점/포차", "한식|파인다이닝/코스",
            "일식|스시/오마카세", "일식|라멘", "일식|돈카츠", "일식|텐동/튀김",
            "일식|이자카야", "일식|야키니쿠", "일식|카레", "일식|소바/우동", "일식|파인다이닝/코스",
            "중식|중화요리", "중식|마라/훠궈", "중식|딤섬/만두", "중식|양꼬치", "중식|파인다이닝/코스",
            "양식|파스타/이탈리안", "양식|스테이크", "양식|햄버거", "양식|피자",
            "양식|프렌치", "양식|바베큐", "양식|브런치", "양식|비건/샐러드", "양식|파인다이닝/코스",
            "아시아|베트남", "아시아|태국", "아시아|인도/중동", "아시아|동남아기타",
            "기타|치킨", "기타|카페/디저트", "기타|베이커리", "기타|뷔페", "기타|퓨전"
    );

    public static final Set<String> VALID_SET = Set.copyOf(ALL);

    public static final List<String> VALID_PREFIXES = List.of(
            "한식|", "일식|", "중식|", "양식|", "아시아|", "기타|"
    );

    public static final String CUISINE_LIST_TEXT = ALL.stream()
            .map(c -> "  - " + c)
            .collect(Collectors.joining("\n"));

    public static boolean isValid(String cuisineType) {
        if (VALID_SET.contains(cuisineType)) return true;
        return VALID_PREFIXES.stream().anyMatch(cuisineType::startsWith);
    }
}
