{-# LANGUAGE FlexibleContexts #-}
module Opaleye.MaybeFields (
  
  MaybeFields,
  
  nothingFields,
  nothingFieldsOfTypeOf,
  justFields,
  nullableToMaybeFields,
  
  matchMaybe,
  fromMaybeFields,
  maybeFields,
  maybeFieldsToNullable,
  
  Opaleye.Join.optional,
  Opaleye.MaybeFields.traverseMaybeFields,
  
  catMaybeFields,
  maybeFieldsToSelect,
  
  Nullspec,
  nullspecField,
  nullspecMaybeFields,
  nullspecList,
  nullspecEitherLeft,
  nullspecEitherRight,
  binaryspecMaybeFields,
  distinctspecMaybeFields,
  fromFieldsMaybeFields,
  toFieldsMaybeFields,
  unpackspecMaybeFields,
  valuesspecMaybeFields,
  
  nothingFieldsExplicit,
  fromMaybeFieldsExplicit,
  maybeFieldsExplicit,
  Opaleye.Join.optionalExplicit,
  traverseMaybeFieldsExplicit,
  ) where
import Opaleye.Internal.Distinct
import Opaleye.Internal.MaybeFields
import Opaleye.Internal.Values
import Opaleye.Join
import Opaleye.Internal.Unpackspec
import Opaleye.Select
import Data.Profunctor.Product.Default
traverseMaybeFields :: (Default Unpackspec a a, Default Unpackspec b b)
                    => SelectArr a b
                    
                    -> SelectArr (MaybeFields a) (MaybeFields b)
                    
traverseMaybeFields :: forall a b.
(Default Unpackspec a a, Default Unpackspec b b) =>
SelectArr a b -> SelectArr (MaybeFields a) (MaybeFields b)
traverseMaybeFields = forall a b.
SelectArr a b -> SelectArr (MaybeFields a) (MaybeFields b)
Opaleye.Internal.MaybeFields.traverseMaybeFields
traverseMaybeFieldsExplicit :: Unpackspec a a
                            -> Unpackspec b b
                            -> SelectArr a b
                            -> SelectArr (MaybeFields a) (MaybeFields b)
traverseMaybeFieldsExplicit :: forall a b.
Unpackspec a a
-> Unpackspec b b
-> SelectArr a b
-> SelectArr (MaybeFields a) (MaybeFields b)
traverseMaybeFieldsExplicit Unpackspec a a
_ Unpackspec b b
_ =
  forall a b.
SelectArr a b -> SelectArr (MaybeFields a) (MaybeFields b)
Opaleye.Internal.MaybeFields.traverseMaybeFields