from aenum import Enum


class PlatformTypes(Enum):
    """This class is an enum of all the PlatformTypes supported by the Pantomath Python SDK."""

    ADF = "ADF"
    AIRFLOW = "AIRFLOW"
    ALTERYX = "ALTERYX"
    ANALYZER = "ANALYZER"
    API_GATEWAY = "API_GATEWAY"
    ASTRO = "ASTRO"
    ASTRONOMER = "ASTRONOMER"
    AWS = "AWS"
    AWS_ATHENA = "AWS_ATHENA"
    AWS_EMR = "AWS_EMR"
    AWS_GLUE = "AWS_GLUE"
    AWS_QUICKSIGHT = "AWS_QUICKSIGHT"
    AWS_SAGEMAKER = "AWS_SAGEMAKER"
    AZSTORAGE = "AZSTORAGE"
    BIGQUERY = "BIGQUERY"
    BIG_QUERY = "BIG_QUERY"
    BOX = "BOX"
    CASSANDRADB = "CASSANDRADB"
    CLICKHOUSE = "CLICKHOUSE"
    COMPOSER = "COMPOSER"
    CONTROL_M = "CONTROL_M"
    CUSTOM_LOGS = "CUSTOM_LOGS"
    DATAIKU = "DATAIKU"
    DATAPROC = "DATAPROC"
    DATASTAGE = "DATASTAGE"
    DATA_ACTIVATOR = "DATA_ACTIVATOR"
    DATA_PROC = "DATA_PROC"
    DBT = "DBT"
    DBT_CORE = "DBT_CORE"
    DBX = "DBX"
    DBX_LEGACY = "DBX_LEGACY"
    DELTA_LAKE = "DELTA_LAKE"
    DOMO = "DOMO"
    DROPBOX = "DROPBOX"
    DYNAMODB = "DYNAMODB"
    EXCEL = "EXCEL"
    EXTERNAL = "EXTERNAL"
    FIREBASE = "FIREBASE"
    FIVETRAN = "FIVETRAN"
    GOOGLE_DATA_FUSION = "GOOGLE_DATA_FUSION"
    GOOGLE_DRIVE = "GOOGLE_DRIVE"
    GOOGLE_LOOKER = "GOOGLE_LOOKER"
    GOOGLE_STORAGE = "GOOGLE_STORAGE"
    GREENPLUM = "GREENPLUM"
    HPCC = "HPCC"
    HVR = "HVR"
    IBM_DATASTAGE = "IBM_DATASTAGE"
    INFORMATICA = "INFORMATICA"
    KAFKA = "KAFKA"
    KINESIS = "KINESIS"
    KNIME = "KNIME"
    LOGIC_APP = "LOGIC_APP"
    LOGIC_APPS = "LOGIC_APPS"
    MARIADB = "MARIADB"
    MATILLION = "MATILLION"
    METABASE = "METABASE"
    MICROSOFT_FABRIC = "MICROSOFT_FABRIC"
    MICROSTRATEGY = "MICROSTRATEGY"
    MODE = "MODE"
    MONGODB = "MONGODB"
    MYSQL = "MYSQL"
    NEO4J = "NEO4J"
    OBIEE = "OBIEE"
    ONELAKE = "ONELAKE"
    ORACLE = "ORACLE"
    ORACLE_DATA_INTEGRATOR = "ORACLE_DATA_INTEGRATOR"
    OUTLOOK = "OUTLOOK"
    PBIRS = "PBIRS"
    POSTGRES = "POSTGRES"
    POWERBI = "POWERBI"
    POWER_APPS = "POWER_APPS"
    POWER_AUTOMATE = "POWER_AUTOMATE"
    PREFECT = "PREFECT"
    QLIKSENSE = "QLIKSENSE"
    QLIKVIEW = "QLIKVIEW"
    QLIK_REPLICATE = "QLIK_REPLICATE"
    RDS = "RDS"
    REDSHIFT = "REDSHIFT"
    S3 = "S3"
    SAP_BO = "SAP_BO"
    SAP_HANA = "SAP_HANA"
    SHAREPOINT = "SHAREPOINT"
    SIGMA = "SIGMA"
    SISENSE = "SISENSE"
    SNAP_LOGIC = "SNAP_LOGIC"
    SNOWFLAKE = "SNOWFLAKE"
    SPARK = "SPARK"
    SPOTFIRE = "SPOTFIRE"
    SQL_SERVER = "SQL_SERVER"
    SSAS = "SSAS"
    SSIS = "SSIS"
    SSRS = "SSRS"
    STARBURST = "STARBURST"
    SYNAPSE = "SYNAPSE"
    TABLEAU = "TABLEAU"
    TALEND = "TALEND"
    THOUGHTSPOT = "THOUGHTSPOT"
    UNKNOWN = "UNKNOWN"
    YELLOWBRICK = "YELLOWBRICK"

    @staticmethod
    def get_platform_types():
        """Get a list of all the enum values
        ...
        :return: list of all the enum values
        :rtype: list of strings
        """
        return dir(PlatformTypes)[: len(PlatformTypes)]

    @staticmethod
    def is_platform_type(input):
        """Validates if the unput is part of the enum
        :param input: string to check if part of enum
        :type input: str
        ...
        :return: True if in enum else False
        :rtype: Boolean
        """
        return input in PlatformTypes.get_platform_types()
