module Hasql.CursorTransaction.Private.Specs where

import Hasql.CursorTransaction.Private.Prelude
import qualified Hasql.Decoders as B
import qualified Hasql.Encoders as A

-- |
-- Spefifies how many rows to fetch in a single DB roundtrip.
newtype BatchSize
  = BatchSize Int64

-- |
-- Batch size of 10.
batchSize_10 :: BatchSize
batchSize_10 :: BatchSize
batchSize_10 =
  Int64 -> BatchSize
BatchSize Int64
10

-- |
-- Batch size of 100.
batchSize_100 :: BatchSize
batchSize_100 :: BatchSize
batchSize_100 =
  Int64 -> BatchSize
BatchSize Int64
100

-- |
-- Batch size of 1000.
batchSize_1000 :: BatchSize
batchSize_1000 :: BatchSize
batchSize_1000 =
  Int64 -> BatchSize
BatchSize Int64
1000

-- |
-- Batch size of 10000.
batchSize_10000 :: BatchSize
batchSize_10000 :: BatchSize
batchSize_10000 =
  Int64 -> BatchSize
BatchSize Int64
10000

-- |
-- A parameters encoder immediately supplied with parameters.
newtype EncodedParams
  = EncodedParams (Supplied A.Params)
  deriving (NonEmpty EncodedParams -> EncodedParams
EncodedParams -> EncodedParams -> EncodedParams
(EncodedParams -> EncodedParams -> EncodedParams)
-> (NonEmpty EncodedParams -> EncodedParams)
-> (forall b. Integral b => b -> EncodedParams -> EncodedParams)
-> Semigroup EncodedParams
forall b. Integral b => b -> EncodedParams -> EncodedParams
forall a.
(a -> a -> a)
-> (NonEmpty a -> a)
-> (forall b. Integral b => b -> a -> a)
-> Semigroup a
$c<> :: EncodedParams -> EncodedParams -> EncodedParams
<> :: EncodedParams -> EncodedParams -> EncodedParams
$csconcat :: NonEmpty EncodedParams -> EncodedParams
sconcat :: NonEmpty EncodedParams -> EncodedParams
$cstimes :: forall b. Integral b => b -> EncodedParams -> EncodedParams
stimes :: forall b. Integral b => b -> EncodedParams -> EncodedParams
Semigroup, Semigroup EncodedParams
EncodedParams
Semigroup EncodedParams =>
EncodedParams
-> (EncodedParams -> EncodedParams -> EncodedParams)
-> ([EncodedParams] -> EncodedParams)
-> Monoid EncodedParams
[EncodedParams] -> EncodedParams
EncodedParams -> EncodedParams -> EncodedParams
forall a.
Semigroup a =>
a -> (a -> a -> a) -> ([a] -> a) -> Monoid a
$cmempty :: EncodedParams
mempty :: EncodedParams
$cmappend :: EncodedParams -> EncodedParams -> EncodedParams
mappend :: EncodedParams -> EncodedParams -> EncodedParams
$cmconcat :: [EncodedParams] -> EncodedParams
mconcat :: [EncodedParams] -> EncodedParams
Monoid)

-- |
-- Pack the params encoder and params into EncodedParams.
encodedParams :: A.Params params -> params -> EncodedParams
encodedParams :: forall params. Params params -> params -> EncodedParams
encodedParams Params params
encoder params
params =
  Supplied Params -> EncodedParams
EncodedParams (Params params -> params -> Supplied Params
forall (divisible :: * -> *) input.
divisible input -> input -> Supplied divisible
Supplied Params params
encoder params
params)