{-# LANGUAGE NoImplicitPrelude #-}

module Data.Morpheus.Types.Internal.Config
  ( Config (..),
    VALIDATION_MODE (..),
    defaultConfig,
    debugConfig,
  )
where

import Relude

data VALIDATION_MODE
  = WITHOUT_VARIABLES
  | FULL_VALIDATION
  deriving (VALIDATION_MODE -> VALIDATION_MODE -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VALIDATION_MODE -> VALIDATION_MODE -> Bool
$c/= :: VALIDATION_MODE -> VALIDATION_MODE -> Bool
== :: VALIDATION_MODE -> VALIDATION_MODE -> Bool
$c== :: VALIDATION_MODE -> VALIDATION_MODE -> Bool
Eq, Int -> VALIDATION_MODE -> ShowS
[VALIDATION_MODE] -> ShowS
VALIDATION_MODE -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VALIDATION_MODE] -> ShowS
$cshowList :: [VALIDATION_MODE] -> ShowS
show :: VALIDATION_MODE -> String
$cshow :: VALIDATION_MODE -> String
showsPrec :: Int -> VALIDATION_MODE -> ShowS
$cshowsPrec :: Int -> VALIDATION_MODE -> ShowS
Show)

data Config = Config
  { Config -> Bool
debug :: Bool,
    Config -> VALIDATION_MODE
validationMode :: VALIDATION_MODE
  }
  deriving (Int -> Config -> ShowS
[Config] -> ShowS
Config -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Config] -> ShowS
$cshowList :: [Config] -> ShowS
show :: Config -> String
$cshow :: Config -> String
showsPrec :: Int -> Config -> ShowS
$cshowsPrec :: Int -> Config -> ShowS
Show)

defaultConfig :: Config
defaultConfig :: Config
defaultConfig =
  Config
    { debug :: Bool
debug = Bool
False,
      validationMode :: VALIDATION_MODE
validationMode = VALIDATION_MODE
FULL_VALIDATION
    }

debugConfig :: Config
debugConfig :: Config
debugConfig =
  Config
    { debug :: Bool
debug = Bool
True,
      validationMode :: VALIDATION_MODE
validationMode = VALIDATION_MODE
FULL_VALIDATION
    }