git.iko.soy/typeable/bloodhound
on master help sign in
tests pass, sanity restored
0523803Chris Allen
Database/Bloodhound/Client.hs+12−5
@@ -3,20 +3,21 @@
3module Database.Bloodhound.Client
3module Database.Bloodhound.Client
4 ( createIndex
4 ( createIndex
5 , deleteIndex
5 , deleteIndex
6− , IndexSettings(..)
7− , Server(..)
8 , defaultIndexSettings
6 , defaultIndexSettings
9 , indexDocument
7 , indexDocument
10 , getDocument
8 , getDocument
11 , documentExists
9 , documentExists
12 , deleteDocument
10 , deleteDocument
11+ , searchAll
12+ , searchByIndex
13+ , searchByType
14+ , refreshIndex
15+ , IndexSettings(..)
16+ , Server(..)
13 , Reply(..)
17 , Reply(..)
14 , EsResult(..)
18 , EsResult(..)
15 , Query(..)
19 , Query(..)
16 , Search(..)
20 , Search(..)
17− , searchAll
18− , searchByIndex
19− , searchByType
20 , SearchResult(..)
21 , SearchResult(..)
21 , SearchHits(..)
22 , SearchHits(..)
22 , ShardResult(..)
23 , ShardResult(..)
@@ -260,6 +261,12 @@ searchByType :: Server -> IndexName -> MappingName -> Search -> IO Reply
260searchByType (Server server) indexName mappingName search = dispatchSearch url search where
261searchByType (Server server) indexName mappingName search = dispatchSearch url search where
261 url = joinPath [server, indexName, mappingName, "_search"]
262 url = joinPath [server, indexName, mappingName, "_search"]
262
263
264+refreshIndex :: Server -> IndexName -> IO Reply
265+refreshIndex (Server server) indexName = dispatch url method body where
266+ url = joinPath [server, indexName, "_refresh"]
267+ method = NHTM.methodPost
268+ body = Nothing
269+
263data Search = Search { queryBody :: Maybe Query
270data Search = Search { queryBody :: Maybe Query
264 , filterBody :: Maybe Filter } deriving (Show)
271 , filterBody :: Maybe Filter } deriving (Show)
265
272
tests/tests.hs+10−8
@@ -42,6 +42,7 @@ insertData = do
42 _ <- deleteExampleIndex
42 _ <- deleteExampleIndex
43 created <- createExampleIndex
43 created <- createExampleIndex
44 docCreated <- indexDocument (Server "http://localhost:9200") "twitter" "tweet" exampleTweet "1"
44 docCreated <- indexDocument (Server "http://localhost:9200") "twitter" "tweet" exampleTweet "1"
45+ _ <- refreshIndex testServer "twitter"
45 return ()
46 return ()
46
47
47queryTweet :: IO (Either String Tweet)
48queryTweet :: IO (Either String Tweet)
@@ -56,17 +57,18 @@ queryTweet = do
56
57
57main :: IO ()
58main :: IO ()
58main = hspec $ do
59main = hspec $ do
59− -- describe "index create/delete API" $ do
60+ describe "index create/delete API" $ do
60− -- it "creates and then deletes the requested index" $ do
61+ it "creates and then deletes the requested index" $ do
61− -- -- priming state.
62+ -- priming state.
62− -- _ <- deleteExampleIndex
63+ _ <- deleteExampleIndex
63− -- resp <- createExampleIndex
64+ resp <- createExampleIndex
64− -- deleteResp <- deleteExampleIndex
65+ deleteResp <- deleteExampleIndex
65− -- validateStatus resp 200
66+ validateStatus resp 200
66− -- validateStatus deleteResp 200
67+ validateStatus deleteResp 200
67
68
68 describe "document API" $ do
69 describe "document API" $ do
69 it "indexes, gets, and then deletes the generated document" $ do
70 it "indexes, gets, and then deletes the generated document" $ do
71+ _ <- insertData
70 docInserted <- getDocument (Server "http://localhost:9200") "twitter" "tweet" "1"
72 docInserted <- getDocument (Server "http://localhost:9200") "twitter" "tweet" "1"
71 let newTweet = eitherDecode (responseBody docInserted) :: Either String (EsResult Tweet)
73 let newTweet = eitherDecode (responseBody docInserted) :: Either String (EsResult Tweet)
72 fmap _source newTweet `shouldBe` Right exampleTweet
74 fmap _source newTweet `shouldBe` Right exampleTweet