packages feed

greskell-websocket-1.0.0.1: src/Network/Greskell/WebSocket/Client/Options.hs

-- |
-- Module: Network.Greskell.WebSocket.Client.Options
-- Description: Options to create a Client
-- Maintainer: Toshio Ito <debug.ito@gmail.com>
--
--
module Network.Greskell.WebSocket.Client.Options
    ( -- * Options
      Options
    , defOptions
      -- ** accessor functions
    , connectionSettings
    , batchSize
    , language
    , aliases
    , scriptEvaluationTimeout
      -- * Settings
    , module Network.Greskell.WebSocket.Connection.Settings
    ) where

import           Data.Greskell.GraphSON                         (GValue)
import           Data.HashMap.Strict                            (HashMap)
import           Data.Text                                      (Text)

import           Network.Greskell.WebSocket.Connection          (Connection)
import           Network.Greskell.WebSocket.Connection.Settings

-- | Configuration options to create a client for Gremlin Server.
--
-- You can get the default 'Options' by 'defOptions' function, and
-- customize its fields by accessor functions.
data Options
  = Options
      { connectionSettings      :: !(Settings GValue)
        -- ^ Settings for the underlying 'Connection'. Default:
        -- 'defJSONSettings'.
      , batchSize               :: !(Maybe Int)
        -- ^ \"batchSize\" field for \"eval\" operation. Default:
        -- 'Nothing'.
      , language                :: !(Maybe Text)
        -- ^ \"language\" field for \"eval\" operation. Default:
        -- 'Nothing'.
      , aliases                 :: !(Maybe (HashMap Text Text))
        -- ^ \"aliases\" field for \"eval\" operation. Default: 'Nothing'.
      , scriptEvaluationTimeout :: !(Maybe Int)
        -- ^ \"scriptEvaluationTimeout\" field for \"eval\"
        -- operation. Default: 'Nothing'.
      }

defOptions :: Options
defOptions =
  Options
  { connectionSettings = defJSONSettings,
    batchSize = Nothing,
    language = Nothing,
    aliases = Nothing,
    scriptEvaluationTimeout = Nothing
  }