# 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):
    PINECONE = "PINECONE"
    POSTGRES = "POSTGRES"
    QDRANT = "QDRANT"
    AZUREAI_SEARCH = "AZUREAI_SEARCH"
    MONGODB_ATLAS = "MONGODB_ATLAS"
    MILVUS = "MILVUS"

    def visit(
        self,
        pinecone: typing.Callable[[], T_Result],
        postgres: typing.Callable[[], T_Result],
        qdrant: typing.Callable[[], T_Result],
        azureai_search: typing.Callable[[], T_Result],
        mongodb_atlas: typing.Callable[[], T_Result],
        milvus: typing.Callable[[], T_Result],
    ) -> T_Result:
        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.AZUREAI_SEARCH:
            return azureai_search()
        if self is ConfigurableDataSinkNames.MONGODB_ATLAS:
            return mongodb_atlas()
        if self is ConfigurableDataSinkNames.MILVUS:
            return milvus()
