{-# LANGUAGE OverloadedStrings #-}
module Database.Bolt.Connection.Type where
import Database.Bolt.Value.Type
import Data.Default (Default (..))
import Data.Map.Strict (Map)
import Data.Text (Text)
import Data.Word (Word16, Word32)
import Network.Connection (Connection)
data BoltCfg = BoltCfg { magic :: Word32
, version :: Word32
, userAgent :: Text
, maxChunkSize :: Word16
, socketTimeout :: Int
, host :: String
, port :: Int
, user :: Text
, password :: Text
, secure :: Bool
}
instance Default BoltCfg where
def = BoltCfg { magic = 1616949271
, version = 1
, userAgent = "hasbolt/1.3"
, maxChunkSize = 65535
, socketTimeout = 5
, host = "127.0.0.1"
, port = 7687
, user = ""
, password = ""
, secure = False
}
data Pipe = Pipe { connection :: Connection
, mcs :: Word16
}
data AuthToken = AuthToken { scheme :: Text
, principal :: Text
, credentials :: Text
}
deriving (Eq, Show)
data Response = ResponseSuccess { succMap :: Map Text Value }
| ResponseRecord { recsList :: [Value] }
| ResponseIgnored { ignoreMap :: Map Text Value }
| ResponseFailure { failMap :: Map Text Value }
deriving (Eq, Show)
data Request = RequestInit { agent :: Text
, token :: AuthToken
}
| RequestRun { statement :: Text
, parameters :: Map Text Value
}
| RequestAckFailure
| RequestReset
| RequestDiscardAll
| RequestPullAll
deriving (Eq, Show)