packages feed

hasbolt 0.1.2.0 → 0.1.2.1

raw patch · 6 files changed

+63/−13 lines, 6 filesdep −network-simpledep ~basedep ~hasboltPVP ok

version bump matches the API change (PVP)

Dependencies removed: network-simple

Dependency ranges changed: base, hasbolt

API changes (from Hackage documentation)

Files

hasbolt.cabal view
@@ -1,5 +1,5 @@ name: hasbolt-version: 0.1.2.0+version: 0.1.2.1 cabal-version: >=1.10 build-type: Simple license: BSD3@@ -42,7 +42,6 @@         data-binary-ieee754 >=0.4.4 && <0.5,         transformers >=0.5.2.0 && <0.6,         network >=2.6.3.1 && <2.7,-        network-simple >=0.4.0.5 && <0.5,         data-default >=0.7.1.1 && <0.8,         hex >=0.1.2 && <0.2     default-language: Haskell2010@@ -52,6 +51,7 @@         Database.Bolt.Value.Helpers         Database.Bolt.Value.Instances         Database.Bolt.Value.Structure+        Database.Bolt.Connection.Socket         Database.Bolt.Connection.Type         Database.Bolt.Connection.Instances         Database.Bolt.Connection.Pipe@@ -64,7 +64,7 @@     main-is: Spec.hs     build-depends:         base >=4.8 && <5,-        hasbolt >=0.1.2.0 && <0.2,+        hasbolt >=0.1.2.1 && <0.2,         hspec >=2.4.1 && <2.5,         QuickCheck >=2.9 && <2.11,         hex >=0.1.2 && <0.2,
src/Database/Bolt.hs view
@@ -20,8 +20,10 @@ import           Data.Map.Strict               (Map) import           Control.Monad.IO.Class        (MonadIO) +-- |Runs Cypher query and returns list of obtained 'Record's. Strict version query :: MonadIO m => Text -> BoltActionT m [Record] query = query' +-- |Runs Cypher query with parameters and returns list of obtained 'Record's. Strict version queryP :: MonadIO m => Text -> Map Text Value -> BoltActionT m [Record] queryP = queryP'
src/Database/Bolt/Connection.hs view
@@ -26,11 +26,11 @@ run :: Pipe -> BoltActionT m a -> m a run = flip runReaderT --- |Runs Cypher query with parameters and returns list of obtained 'Record's+-- |Runs Cypher query with parameters and returns list of obtained 'Record's. Lazy version queryP :: MonadIO m => Text -> Map Text Value -> BoltActionT m [Record] queryP = querySL False --- |Runs Cypher query and returns list of obtained 'Record's+-- |Runs Cypher query and returns list of obtained 'Record's. Lazy version query :: MonadIO m => Text -> BoltActionT m [Record] query cypher = queryP cypher empty 
src/Database/Bolt/Connection/Pipe.hs view
@@ -5,15 +5,16 @@ import           Database.Bolt.Value.Instances import           Database.Bolt.Value.Type +import           Database.Bolt.Connection.Socket    (Socket, closeSock,+                                                     connectSock, recv, send,+                                                     sendMany)+ import           Control.Monad                      (forM_, unless, void, when) import           Control.Monad.IO.Class             (MonadIO (..)) import           Data.ByteString                    (ByteString) import qualified Data.ByteString                    as B (concat, length, null,                                                           splitAt) import           Data.Word                          (Word16)-import           Network.Simple.TCP                 (Socket, closeSock,-                                                     connectSock, recv, send,-                                                     sendMany)  -- |Creates new 'Pipe' instance to use all requests through connect :: MonadIO m => BoltCfg -> m Pipe
+ src/Database/Bolt/Connection/Socket.hs view
@@ -0,0 +1,46 @@+module Database.Bolt.Connection.Socket+  ( Socket+  , connectSock, closeSock+  , recv, send, sendMany+  ) where++import           Control.Exception         (bracketOnError)+import           Control.Monad.IO.Class    (MonadIO (..))+import           Data.ByteString           (ByteString, null)+import           Network.Socket            (AddrInfoFlag (..), HostName,+                                            ServiceName, SockAddr, Socket,+                                            SocketType (..), addrAddress,+                                            addrFamily, addrFlags, addrProtocol,+                                            addrSocketType, defaultHints,+                                            getAddrInfo, socket, close, connect)+import qualified Network.Socket.ByteString as NSB (recv, sendAll, sendMany)+import           Prelude                   hiding (null)++connectSock :: MonadIO m => HostName -> ServiceName -> m (Socket, SockAddr)+connectSock host port = liftIO $ bracketOnError (createSock host port) (closeSock . fst) $+                          \(sock, addr) -> liftIO (connect sock addr) >> pure (sock, addr)++createSock :: MonadIO m => HostName -> ServiceName -> m (Socket, SockAddr)+createSock host port = liftIO $ do (addr:_) <- getAddrInfo (Just hints) (Just host) (Just port)+                                   let family'   = addrFamily addr+                                   let type'     = addrSocketType addr+                                   let protocol' = addrProtocol addr+                                   sock <- socket family' type' protocol'+                                   pure (sock, addrAddress addr)+  where hints = defaultHints { addrFlags = [AI_ADDRCONFIG]+                             , addrSocketType = Stream+                             }++closeSock :: MonadIO m => Socket -> m ()+closeSock = liftIO . close++recv :: MonadIO m => Socket -> Int -> m (Maybe ByteString)+recv sock nbytes = liftIO $ do bs <- NSB.recv sock nbytes+                               if null bs then pure Nothing+                                            else pure (Just bs)++send :: MonadIO m => Socket -> ByteString -> m ()+send sock = liftIO . NSB.sendAll sock++sendMany :: MonadIO m => Socket -> [ByteString] -> m ()+sendMany sock = liftIO . NSB.sendMany sock
src/Database/Bolt/Connection/Type.hs view
@@ -4,11 +4,12 @@  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.Simple.TCP        (Socket)+import           Database.Bolt.Connection.Socket (Socket)++import           Data.Default                    (Default (..))+import           Data.Map.Strict                 (Map)+import           Data.Text                       (Text)+import           Data.Word                       (Word16, Word32)  -- |Configuration of driver connection data BoltCfg = BoltCfg { magic         :: Word32  -- ^'6060B017' value