{-# LANGUAGE OverloadedStrings #-} module Database.Bolt.Protocol.Ver1 ( init, exec, AuthToken (..), open, Transaction, runTransaction, cypher, object, (#=), (#:), (#:?), ) where import Control.Monad import Prelude hiding (init) import Database.Bolt.Exception import Database.Bolt.Protocol.Ver1.Message (AuthToken (..)) import Database.Bolt.Protocol.Ver1.Request (exec, init) import Database.Bolt.Protocol.Ver1.Transaction (Transaction, cypher, runTransaction) import Database.Bolt.Protocol.Ver1.Types import Database.Bolt.Transport useragent :: UserAgent useragent = "haskell-bolt/0.0" open :: (Transport t) => (a -> IO t) -> a -> AuthToken -> IO t open c a auth = do conn <- c a agreed <- handshake conn (OfferProtocols 1 noProto noProto noProto) unless (agreed == 1) $ protocolErr "Can't negotiate protocol version" init conn useragent auth return conn