module Hasql.Core.ParseDataRow where
import Hasql.Prelude
import qualified Ptr.Parse as B
import qualified Hasql.Core.Protocol.Parse.Primitives as C
data ParseDataRow result =
ParseDataRow !Int (B.Parse result)
deriving instance Functor ParseDataRow
instance Applicative ParseDataRow where
pure x =
ParseDataRow 0 (pure x)
(<*>) (ParseDataRow leftSize leftParse) (ParseDataRow rightSize rightParse) =
ParseDataRow (leftSize + rightSize) (leftParse <*> rightParse)
nullableColumn :: B.Parse column -> ParseDataRow (Maybe column)
nullableColumn parseColumn =
ParseDataRow 1 (C.nullableDataRowColumn parseColumn)
column :: B.Parse column -> ParseDataRow column
column parseColumn =
ParseDataRow 1 (C.nonNullDataRowColumn parseColumn)