{-# LANGUAGE FlexibleContexts #-}
module Opaleye.Values(
values,
valuesExplicit,
V.Valuesspec,
V.valuesspecField,
) where
import qualified Opaleye.Internal.Values as V
import qualified Opaleye.Select as S
import qualified Data.List.NonEmpty as NEL
import Data.Profunctor.Product.Default (Default, def)
values :: Default V.Valuesspec fields fields
=> [fields] -> S.Select fields
values :: forall fields.
Default Valuesspec fields fields =>
[fields] -> Select fields
values = forall fields fields'.
Valuesspec fields fields' -> [fields] -> Select fields'
valuesExplicit forall (p :: * -> * -> *) a b. Default p a b => p a b
def
valuesExplicit :: V.Valuesspec fields fields'
-> [fields] -> S.Select fields'
valuesExplicit :: forall fields fields'.
Valuesspec fields fields' -> [fields] -> Select fields'
valuesExplicit (V.ValuesspecSafe Nullspec fields fields'
nullspec Rowspec fields fields'
rowspec) [fields]
fields = case forall a. [a] -> Maybe (NonEmpty a)
NEL.nonEmpty [fields]
fields of
Maybe (NonEmpty fields)
Nothing -> forall columns a. Nullspec columns a -> Select a
V.emptySelectExplicit Nullspec fields fields'
nullspec
Just NonEmpty fields
rows -> forall columns columns'.
Rowspec columns columns' -> NonEmpty columns -> Select columns'
V.nonEmptyValues Rowspec fields fields'
rowspec NonEmpty fields
rows