packages feed

bolt-0.3.2.0: lib/Database/Bolt/Protocol/Ver1.hs

{-# 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