module Kafka.Settings.Internal
  ( Kafka.Types.KafkaLogLevel (..),
    decoderBrokerAddresses,
    decoderKafkaLogLevel,
  )
where

import qualified Environment
import qualified Kafka.Types

decoderBrokerAddresses :: Environment.Decoder [Kafka.Types.BrokerAddress]
decoderBrokerAddresses :: Decoder [BrokerAddress]
decoderBrokerAddresses =
  Variable -> Parser [BrokerAddress] -> Decoder [BrokerAddress]
forall a. Variable -> Parser a -> Decoder a
Environment.variable
    Variable :: Text -> Text -> Text -> Variable
Environment.Variable
      { name :: Text
Environment.name = Text
"KAFKA_BROKER_ADDRESSES",
        description :: Text
Environment.description = Text
"A comma-separated list of broker addresses",
        defaultValue :: Text
Environment.defaultValue = Text
"localhost:9092"
      }
    ((Text -> [BrokerAddress]) -> Parser Text -> Parser [BrokerAddress]
forall (m :: * -> *) a value.
Functor m =>
(a -> value) -> m a -> m value
map ((Text -> BrokerAddress) -> List Text -> [BrokerAddress]
forall a b. (a -> b) -> List a -> List b
List.map Text -> BrokerAddress
Kafka.Types.BrokerAddress (List Text -> [BrokerAddress])
-> (Text -> List Text) -> Text -> [BrokerAddress]
forall b c a. (b -> c) -> (a -> b) -> a -> c
<< Text -> Text -> List Text
Text.split Text
",") Parser Text
Environment.text)

decoderKafkaLogLevel :: Environment.Decoder Kafka.Types.KafkaLogLevel
decoderKafkaLogLevel :: Decoder KafkaLogLevel
decoderKafkaLogLevel =
  Variable -> Parser KafkaLogLevel -> Decoder KafkaLogLevel
forall a. Variable -> Parser a -> Decoder a
Environment.variable
    Variable :: Text -> Text -> Text -> Variable
Environment.Variable
      { name :: Text
Environment.name = Text
"KAFKA_LOG_LEVEL",
        description :: Text
Environment.description = Text
"Kafka log level",
        defaultValue :: Text
Environment.defaultValue = Text
"Debug"
      }
    ((Text -> KafkaLogLevel) -> Parser Text -> Parser KafkaLogLevel
forall (m :: * -> *) a value.
Functor m =>
(a -> value) -> m a -> m value
map Text -> KafkaLogLevel
kafkaLogLevelFromText Parser Text
Environment.text)

kafkaLogLevelFromText :: Text -> Kafka.Types.KafkaLogLevel
kafkaLogLevelFromText :: Text -> KafkaLogLevel
kafkaLogLevelFromText Text
text =
  case Text
text of
    Text
"Emerg" -> KafkaLogLevel
Kafka.Types.KafkaLogEmerg
    Text
"Alert" -> KafkaLogLevel
Kafka.Types.KafkaLogAlert
    Text
"Crit" -> KafkaLogLevel
Kafka.Types.KafkaLogCrit
    Text
"Err" -> KafkaLogLevel
Kafka.Types.KafkaLogErr
    Text
"Warning" -> KafkaLogLevel
Kafka.Types.KafkaLogWarning
    Text
"Notice" -> KafkaLogLevel
Kafka.Types.KafkaLogNotice
    Text
"Info" -> KafkaLogLevel
Kafka.Types.KafkaLogInfo
    Text
"Debug" -> KafkaLogLevel
Kafka.Types.KafkaLogDebug
    Text
_ -> KafkaLogLevel
Kafka.Types.KafkaLogDebug