# This file was auto-generated by Fern from our API Definition.

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class ConfigurableDataSinkNames(str, enum.Enum):
    """
    An enumeration.
    """

    CHROMA = "CHROMA"
    PINECONE = "PINECONE"
    POSTGRES = "POSTGRES"
    QDRANT = "QDRANT"
    WEAVIATE = "WEAVIATE"

    def visit(
        self,
        chroma: typing.Callable[[], T_Result],
        pinecone: typing.Callable[[], T_Result],
        postgres: typing.Callable[[], T_Result],
        qdrant: typing.Callable[[], T_Result],
        weaviate: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is ConfigurableDataSinkNames.CHROMA:
            return chroma()
        if self is ConfigurableDataSinkNames.PINECONE:
            return pinecone()
        if self is ConfigurableDataSinkNames.POSTGRES:
            return postgres()
        if self is ConfigurableDataSinkNames.QDRANT:
            return qdrant()
        if self is ConfigurableDataSinkNames.WEAVIATE:
            return weaviate()
