module Hasql.CursorTransaction.Private.Statements where import qualified ByteString.TreeBuilder as D import Hasql.CursorTransaction.Private.Prelude import qualified Hasql.CursorTransaction.Private.Specs as F import qualified Hasql.Decoders as C import qualified Hasql.Encoders as B import Hasql.Statement declareCursor :: ByteString -> ByteString -> B.Params a -> Statement a () declareCursor :: forall a. ByteString -> ByteString -> Params a -> Statement a () declareCursor ByteString name ByteString sql Params a encoder = ByteString -> Params a -> Result () -> Bool -> Statement a () forall params result. ByteString -> Params params -> Result result -> Bool -> Statement params result Statement ByteString sql' Params a encoder Result () C.noResult Bool False where sql' :: ByteString sql' = Builder -> ByteString D.toByteString (Builder -> ByteString) -> Builder -> ByteString forall a b. (a -> b) -> a -> b $ Builder "DECLARE " Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> ByteString -> Builder D.byteString ByteString name Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder " NO SCROLL CURSOR FOR " Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> ByteString -> Builder D.byteString ByteString sql closeCursor :: ByteString -> Statement () () closeCursor :: ByteString -> Statement () () closeCursor ByteString name = ByteString -> Params () -> Result () -> Bool -> Statement () () forall params result. ByteString -> Params params -> Result result -> Bool -> Statement params result Statement ByteString sql Params () B.noParams Result () C.noResult Bool True where sql :: ByteString sql = ByteString "CLOSE " ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString name fetchFromCursor :: ByteString -> F.BatchSize -> C.Result result -> Statement () result fetchFromCursor :: forall result. ByteString -> BatchSize -> Result result -> Statement () result fetchFromCursor ByteString name (F.BatchSize Int64 batchSize) Result result decoder = ByteString -> Params () -> Result result -> Bool -> Statement () result forall params result. ByteString -> Params params -> Result result -> Bool -> Statement params result Statement ByteString sql Params () encoder Result result decoder Bool True where sql :: ByteString sql = Builder -> ByteString D.toByteString (Builder -> ByteString) -> Builder -> ByteString forall a b. (a -> b) -> a -> b $ Builder "FETCH FORWARD " Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Int64 -> Builder forall a. Integral a => a -> Builder D.asciiIntegral Int64 batchSize Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder " FROM " Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> ByteString -> Builder D.byteString ByteString name encoder :: Params () encoder = Params () B.noParams