package io.delphiplatform.api.v3.model;

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

import java.util.Arrays;

import io.delphiplatform.api.exception.InvalidParameterException;
import io.delphiplatform.api.v3.constant.RequestConstants;

public enum IncludeTracks {
    RELATED_ISRCS("related_isrcs");

    private final String value;

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

    @JsonCreator
    public static IncludeTracks fromValue(String value) {
        for (IncludeTracks mediaType : IncludeTracks.values()) {
            if (mediaType.value.equals(value)) {
                return mediaType;
            }
        }
        throw new InvalidParameterException(RequestConstants.INCLUDE,
            Arrays.stream(IncludeTracks.values()).map(IncludeTracks::getValue), value);

    }

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