package io.delphiplatform.api.v3.model;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

import java.util.Arrays;

/**
 * Available options for the `include` parameter on Shazam Chart position-related endpoints.
 */
public enum IncludeChart {

    TRACK("track");

    private final String value;

    IncludeChart(String value) {
        this.value = value;
    }

    @JsonCreator
    public static IncludeChart fromValue(String value) {
        return Arrays.stream(IncludeChart.values()).
            filter(b -> b.value.equals(value)).findFirst()
            .orElseThrow(() ->
                new IllegalArgumentException("Unexpected value '" + value + "'"));
    }

    @JsonValue
    public String getValue() {
        return value;
    }

    @Override
    public String toString() {
        return String.valueOf(value);
    }
}

