@@ -51,7 +51,11 @@ module Database.Bloodhound.Types
51 , omitNulls
51 , omitNulls
54− , BHEnv(..)
54+ , BHEnv
55 , MonadBH(..)
59 , MonadBH(..)
56 , Version(..)
60 , Version(..)
57 , Status(..)
61 , Status(..)
@@ -258,6 +262,9 @@ module Database.Bloodhound.Types
258 , TermsResult(..)
262 , TermsResult(..)
259 , DateHistogramResult(..)
263 , DateHistogramResult(..)
260 , DateRangeResult(..)
264 , DateRangeResult(..)
263import Control.Applicative
270import Control.Applicative
@@ -267,30 +274,31 @@ import Control.Monad.Reader
267import Control.Monad.State
274import Control.Monad.State
268import Control.Monad.Writer
275import Control.Monad.Writer
269import Data.Aeson
276import Data.Aeson
270−import Data.Aeson.Types (Pair, Parser, emptyObject,
277+import Data.Aeson.Types (Pair, Parser, emptyObject,
271− parseMaybe)
278+ parseMaybe)
272−import qualified Data.ByteString.Lazy.Char8 as L
279+import qualified Data.ByteString.Lazy.Char8 as L
273import Data.Char
280import Data.Char
274−import Data.Hashable (Hashable)
281+import Data.Hashable (Hashable)
275−import qualified Data.HashMap.Strict as HM
282+import qualified Data.HashMap.Strict as HM
276−import Data.List (foldl', nub)
283+import Data.List (foldl', nub)
277−import Data.List.NonEmpty (NonEmpty (..), toList)
284+import Data.List.NonEmpty (NonEmpty (..), toList)
278−import qualified Data.Map.Strict as M
285+import qualified Data.Map.Strict as M
279import Data.Maybe
286import Data.Maybe
280−import Data.Text (Text)
287+import Data.Text (Text)
281−import qualified Data.Text as T
288+import qualified Data.Text as T
282import Data.Time.Calendar
289import Data.Time.Calendar
283−import Data.Time.Clock (NominalDiffTime, UTCTime)
290+import Data.Time.Clock (NominalDiffTime, UTCTime)
284import Data.Time.Clock.POSIX
291import Data.Time.Clock.POSIX
285−import qualified Data.Traversable as DT
292+import qualified Data.Traversable as DT
286−import Data.Typeable (Typeable)
293+import Data.Typeable (Typeable)
287−import qualified Data.Vector as V
294+import qualified Data.Vector as V
288import GHC.Enum
295import GHC.Enum
289−import GHC.Generics (Generic)
296+import GHC.Generics (Generic)
290import Network.HTTP.Client
297import Network.HTTP.Client
291−import qualified Network.HTTP.Types.Method as NHTM
298+import qualified Network.HTTP.Types.Method as NHTM
293import Database.Bloodhound.Types.Class
300import Database.Bloodhound.Types.Class
301+import Database.Bloodhound.Types.Internal
296-- >>> :set -XOverloadedStrings
304-- >>> :set -XOverloadedStrings
@@ -303,20 +311,12 @@ import Database.Bloodhound.Types.Class
303-- defaultIndexSettings is exported by Database.Bloodhound as well
311-- defaultIndexSettings is exported by Database.Bloodhound as well
304-- no trailing slashes in servers, library handles building the path.
312-- no trailing slashes in servers, library handles building the path.
306−{-| Common environment for Elasticsearch calls. Connections will be
314+-- | Create a 'BHEnv' with all optional fields defaulted. HTTP hook
307− pipelined according to the provided HTTP connection manager.
315+-- will be a noop. You can use the exported fields to customize it further, e.g.:
309−data BHEnv = BHEnv { bhServer :: Server
317+-- >> (mkBHEnv myServer myManager) { bhRequestHook = customHook }
310− , bhManager :: Manager
318+mkBHEnv :: Server -> Manager -> BHEnv
311− }
319+mkBHEnv s m = BHEnv s m return
313−{-| All API calls to Elasticsearch operate within
314− MonadBH. The idea is that it can be easily embedded in your
315− own monad transformer stack. A default instance for a ReaderT and
316− alias 'BH' is provided for the simple case.
318−class (Functor m, Applicative m, MonadIO m) => MonadBH m where
321newtype BH m a = BH {
321newtype BH m a = BH {
322 unBH :: ReaderT BHEnv m a
322 unBH :: ReaderT BHEnv m a
@@ -345,10 +345,6 @@ instance (MonadReader r m) => MonadReader r (BH m) where
345instance (Functor m, Applicative m, MonadIO m) => MonadBH (BH m) where
345instance (Functor m, Applicative m, MonadIO m) => MonadBH (BH m) where
346 getBHEnv = BH getBHEnv
346 getBHEnv = BH getBHEnv
349−instance (Functor m, Applicative m, MonadIO m) => MonadBH (ReaderT BHEnv m) where
352runBH :: BHEnv -> BH m a -> m a
348runBH :: BHEnv -> BH m a -> m a
353runBH e f = runReaderT (unBH f) e
349runBH e f = runReaderT (unBH f) e
@@ -479,9 +475,9 @@ data CompoundFormat = CompoundFileFormat Bool
480newtype NominalDiffTimeJSON = NominalDiffTimeJSON { ndtJSON :: NominalDiffTime }
476newtype NominalDiffTimeJSON = NominalDiffTimeJSON { ndtJSON :: NominalDiffTime }
482−data IndexSettingsSummary = IndexSettingsSummary { sSummaryIndexName :: IndexName
478+data IndexSettingsSummary = IndexSettingsSummary { sSummaryIndexName :: IndexName
483 , sSummaryFixedSettings :: IndexSettings
479 , sSummaryFixedSettings :: IndexSettings
484− , sSummaryUpdateable :: [UpdatableIndexSetting]}
480+ , sSummaryUpdateable :: [UpdatableIndexSetting]}
485 deriving (Eq, Show, Generic, Typeable)
481 deriving (Eq, Show, Generic, Typeable)
487{-| 'Reply' and 'Method' are type synonyms from 'Network.HTTP.Types.Method.Method' -}
483{-| 'Reply' and 'Method' are type synonyms from 'Network.HTTP.Types.Method.Method' -}
@@ -764,10 +760,6 @@ newtype ShardCount = ShardCount Int deriving (Eq, Show, Generic, ToJSON, Typeabl
765newtype ReplicaCount = ReplicaCount Int deriving (Eq, Show, Generic, ToJSON, Typeable)
761newtype ReplicaCount = ReplicaCount Int deriving (Eq, Show, Generic, ToJSON, Typeable)
767−{-| 'Server' is used with the client functions to point at the ES instance
769−newtype Server = Server Text deriving (Eq, Show, Generic, Typeable)
771{-| 'IndexName' is used to describe which index to query/create/delete
763{-| 'IndexName' is used to describe which index to query/create/delete
773newtype IndexName = IndexName Text deriving (Eq, Generic, Show, ToJSON, FromJSON, Typeable)
765newtype IndexName = IndexName Text deriving (Eq, Generic, Show, ToJSON, FromJSON, Typeable)
@@ -3544,3 +3536,9 @@ instance Enum DocVersion where
3544 fromEnum = docVersionNumber
3536 fromEnum = docVersionNumber
3545 enumFrom = boundedEnumFrom
3537 enumFrom = boundedEnumFrom
3546 enumFromThen = boundedEnumFromThen
3538 enumFromThen = boundedEnumFromThen
3540+-- | Username type used for HTTP Basic authentication. See 'basicAuthHook'.
3541+newtype EsUsername = EsUsername { esUsername :: Text } deriving (Show, Eq)
3543+-- | Password type used for HTTP Basic authentication. See 'basicAuthHook'.
3544+newtype EsPassword = EsPassword { esPassword :: Text } deriving (Show, Eq)