{-# language DataKinds #-}
{-# language DisambiguateRecordFields #-}
{-# language FlexibleContexts #-}
{-# language NamedFieldPuns #-}
{-# language OverloadedStrings #-}
{-# language ScopedTypeVariables #-}
{-# language TypeApplications #-}
{-# language TypeFamilies #-}
{-# options_ghc -fno-warn-redundant-constraints #-}
module Rel8.Expr.Aggregate
( count, countOn, countStar
, countDistinct, countDistinctOn
, countWhere, countWhereOn
, and, andOn, or, orOn
, min, minOn, max, maxOn
, sum, sumOn, sumWhere
, avg, avgOn
, stringAgg, stringAggOn
, mode, modeOn
, percentile, percentileOn
, percentileContinuous, percentileContinuousOn
, hypotheticalRank
, hypotheticalDenseRank
, hypotheticalPercentRank
, hypotheticalCumeDist
, groupByExpr, groupByExprOn
, distinctAggregate
, filterWhereExplicit
, listAggExpr, listAggExprOn, nonEmptyAggExpr, nonEmptyAggExprOn
, listCatExpr, listCatExprOn, nonEmptyCatExpr, nonEmptyCatExprOn
, slistAggExpr, snonEmptyAggExpr
, slistCatExpr, snonEmptyCatExpr
)
where
import Data.Functor.Contravariant ((>$<))
import Data.Int ( Int64 )
import Data.List.NonEmpty ( NonEmpty )
import Data.String (IsString)
import Prelude hiding (and, max, min, null, or, show, sum)
import qualified Opaleye.Aggregate as Opaleye
import qualified Opaleye.Internal.Aggregate as Opaleye
import qualified Opaleye.Internal.HaskellDB.PrimQuery as Opaleye
import qualified Opaleye.Internal.Operators as Opaleye
import Data.Profunctor (dimap, lmap)
import Rel8.Aggregate
( Aggregator' (Aggregator)
, Aggregator1
, filterWhereExplicit
, unsafeMakeAggregator
)
import Rel8.Aggregate.Fold (Fallback (Empty, Fallback))
import Rel8.Expr ( Expr )
import Rel8.Expr.Array (sempty)
import Rel8.Expr.Bool (false, true)
import Rel8.Expr.Eq ((/=.))
import Rel8.Expr.Opaleye
( castExpr
, fromColumn
, fromPrimExpr
, toColumn
, toPrimExpr
, unsafeCastExpr
)
import Rel8.Expr.Order (asc)
import Rel8.Expr.Read (sread)
import Rel8.Expr.Show (show)
import qualified Rel8.Expr.Text as Text
import Rel8.Order (Order (Order))
import Rel8.Schema.Null ( Sql, Unnullify )
import Rel8.Table.Opaleye (fromOrder, unpackspec)
import Rel8.Table.Order (ascTable)
import Rel8.Type ( DBType, typeInformation )
import Rel8.Type.Array (arrayTypeName, encodeArrayElement)
import Rel8.Type.Eq ( DBEq )
import Rel8.Type.Information (TypeInformation)
import Rel8.Type.Num (DBFractional, DBNum)
import Rel8.Type.Ord (DBMax, DBMin, DBOrd)
import Rel8.Type.String ( DBString )
import Rel8.Type.Sum ( DBSum )
count :: Aggregator' fold (Expr a) (Expr Int64)
count :: forall (fold :: Fold) a. Aggregator' fold (Expr a) (Expr Int64)
count =
(Expr a -> Field_ 'NonNullable Any)
-> (Field_ 'NonNullable SqlInt8 -> Expr Int64)
-> Fallback fold (Expr Int64)
-> Aggregator
(Field_ 'NonNullable Any) (Field_ 'NonNullable SqlInt8)
-> Aggregator' fold (Expr a) (Expr Int64)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(PrimExpr -> Field_ 'NonNullable Any
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable Any)
-> (Expr a -> PrimExpr) -> Expr a -> Field_ 'NonNullable Any
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr a -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr)
(PrimExpr -> Expr Int64
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr Int64)
-> (Field_ 'NonNullable SqlInt8 -> PrimExpr)
-> Field_ 'NonNullable SqlInt8
-> Expr Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable SqlInt8 -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
(Expr Int64 -> Fallback fold (Expr Int64)
forall a (fold :: Fold). a -> Fallback fold a
Fallback Expr Int64
0)
Aggregator (Field_ 'NonNullable Any) (Field_ 'NonNullable SqlInt8)
forall a. Aggregator (Field a) (Field_ 'NonNullable SqlInt8)
Opaleye.count
countOn :: (i -> Expr a) -> Aggregator' fold i (Expr Int64)
countOn :: forall i a (fold :: Fold).
(i -> Expr a) -> Aggregator' fold i (Expr Int64)
countOn i -> Expr a
f = (i -> Expr a)
-> Aggregator' fold (Expr a) (Expr Int64)
-> Aggregator' fold i (Expr Int64)
forall a b c.
(a -> b) -> Aggregator' fold b c -> Aggregator' fold a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f Aggregator' fold (Expr a) (Expr Int64)
forall (fold :: Fold) a. Aggregator' fold (Expr a) (Expr Int64)
count
countDistinct :: Sql DBEq a
=> Aggregator' fold (Expr a) (Expr Int64)
countDistinct :: forall a (fold :: Fold).
Sql DBEq a =>
Aggregator' fold (Expr a) (Expr Int64)
countDistinct = Aggregator' fold (Expr a) (Expr Int64)
-> Aggregator' fold (Expr a) (Expr Int64)
forall (fold :: Fold) i a.
Aggregator' fold i a -> Aggregator' fold i a
distinctAggregate Aggregator' fold (Expr a) (Expr Int64)
forall (fold :: Fold) a. Aggregator' fold (Expr a) (Expr Int64)
count
countDistinctOn :: Sql DBEq a
=> (i -> Expr a) -> Aggregator' fold i (Expr Int64)
countDistinctOn :: forall a i (fold :: Fold).
Sql DBEq a =>
(i -> Expr a) -> Aggregator' fold i (Expr Int64)
countDistinctOn i -> Expr a
f = (i -> Expr a)
-> Aggregator' fold (Expr a) (Expr Int64)
-> Aggregator' fold i (Expr Int64)
forall a b c.
(a -> b) -> Aggregator' fold b c -> Aggregator' fold a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f Aggregator' fold (Expr a) (Expr Int64)
forall a (fold :: Fold).
Sql DBEq a =>
Aggregator' fold (Expr a) (Expr Int64)
countDistinct
countStar :: Aggregator' fold i (Expr Int64)
countStar :: forall (fold :: Fold) i. Aggregator' fold i (Expr Int64)
countStar = (i -> Expr Bool)
-> Aggregator' fold (Expr Bool) (Expr Int64)
-> Aggregator' fold i (Expr Int64)
forall a b c.
(a -> b) -> Aggregator' fold b c -> Aggregator' fold a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap (Expr Bool -> i -> Expr Bool
forall a b. a -> b -> a
const Expr Bool
true) Aggregator' fold (Expr Bool) (Expr Int64)
forall (fold :: Fold) a. Aggregator' fold (Expr a) (Expr Int64)
count
countWhere :: Aggregator' fold (Expr Bool) (Expr Int64)
countWhere :: forall (fold :: Fold). Aggregator' fold (Expr Bool) (Expr Int64)
countWhere = IfPP (Expr Int64) (Expr Int64)
-> (Expr Bool -> Expr Bool)
-> Aggregator (Expr Bool) (Expr Int64)
-> Aggregator' fold (Expr Bool) (Expr Int64)
forall a i (fold :: Fold).
IfPP a a
-> (i -> Expr Bool) -> Aggregator i a -> Aggregator' fold i a
filterWhereExplicit IfPP (Expr Int64) (Expr Int64)
forall a. IfPP (Expr a) (Expr a)
ifPP Expr Bool -> Expr Bool
forall a. a -> a
id Aggregator (Expr Bool) (Expr Int64)
forall (fold :: Fold) i. Aggregator' fold i (Expr Int64)
countStar
countWhereOn :: (i -> Expr Bool) -> Aggregator' fold i (Expr Int64)
countWhereOn :: forall i (fold :: Fold).
(i -> Expr Bool) -> Aggregator' fold i (Expr Int64)
countWhereOn i -> Expr Bool
f = (i -> Expr Bool)
-> Aggregator' fold (Expr Bool) (Expr Int64)
-> Aggregator' fold i (Expr Int64)
forall a b c.
(a -> b) -> Aggregator' fold b c -> Aggregator' fold a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr Bool
f Aggregator' fold (Expr Bool) (Expr Int64)
forall (fold :: Fold). Aggregator' fold (Expr Bool) (Expr Int64)
countWhere
and :: Aggregator' fold (Expr Bool) (Expr Bool)
and :: forall (fold :: Fold). Aggregator' fold (Expr Bool) (Expr Bool)
and =
(Expr Bool -> Field_ 'NonNullable SqlBool)
-> (Field_ 'NonNullable SqlBool -> Expr Bool)
-> Fallback fold (Expr Bool)
-> Aggregator
(Field_ 'NonNullable SqlBool) (Field_ 'NonNullable SqlBool)
-> Aggregator' fold (Expr Bool) (Expr Bool)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(PrimExpr -> Field_ 'NonNullable SqlBool
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable SqlBool)
-> (Expr Bool -> PrimExpr)
-> Expr Bool
-> Field_ 'NonNullable SqlBool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr Bool -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr)
(PrimExpr -> Expr Bool
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr Bool)
-> (Field_ 'NonNullable SqlBool -> PrimExpr)
-> Field_ 'NonNullable SqlBool
-> Expr Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable SqlBool -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
(Expr Bool -> Fallback fold (Expr Bool)
forall a (fold :: Fold). a -> Fallback fold a
Fallback Expr Bool
true)
Aggregator
(Field_ 'NonNullable SqlBool) (Field_ 'NonNullable SqlBool)
Opaleye.boolAnd
andOn :: (i -> Expr Bool) -> Aggregator' fold i (Expr Bool)
andOn :: forall i (fold :: Fold).
(i -> Expr Bool) -> Aggregator' fold i (Expr Bool)
andOn i -> Expr Bool
f = (i -> Expr Bool)
-> Aggregator' fold (Expr Bool) (Expr Bool)
-> Aggregator' fold i (Expr Bool)
forall a b c.
(a -> b) -> Aggregator' fold b c -> Aggregator' fold a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr Bool
f Aggregator' fold (Expr Bool) (Expr Bool)
forall (fold :: Fold). Aggregator' fold (Expr Bool) (Expr Bool)
and
or :: Aggregator' fold (Expr Bool) (Expr Bool)
or :: forall (fold :: Fold). Aggregator' fold (Expr Bool) (Expr Bool)
or =
(Expr Bool -> Field_ 'NonNullable SqlBool)
-> (Field_ 'NonNullable SqlBool -> Expr Bool)
-> Fallback fold (Expr Bool)
-> Aggregator
(Field_ 'NonNullable SqlBool) (Field_ 'NonNullable SqlBool)
-> Aggregator' fold (Expr Bool) (Expr Bool)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(PrimExpr -> Field_ 'NonNullable SqlBool
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable SqlBool)
-> (Expr Bool -> PrimExpr)
-> Expr Bool
-> Field_ 'NonNullable SqlBool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr Bool -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr)
(PrimExpr -> Expr Bool
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr Bool)
-> (Field_ 'NonNullable SqlBool -> PrimExpr)
-> Field_ 'NonNullable SqlBool
-> Expr Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable SqlBool -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
(Expr Bool -> Fallback fold (Expr Bool)
forall a (fold :: Fold). a -> Fallback fold a
Fallback Expr Bool
false)
Aggregator
(Field_ 'NonNullable SqlBool) (Field_ 'NonNullable SqlBool)
Opaleye.boolOr
orOn :: (i -> Expr Bool) -> Aggregator' fold i (Expr Bool)
orOn :: forall i (fold :: Fold).
(i -> Expr Bool) -> Aggregator' fold i (Expr Bool)
orOn i -> Expr Bool
f = (i -> Expr Bool)
-> Aggregator' fold (Expr Bool) (Expr Bool)
-> Aggregator' fold i (Expr Bool)
forall a b c.
(a -> b) -> Aggregator' fold b c -> Aggregator' fold a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr Bool
f Aggregator' fold (Expr Bool) (Expr Bool)
forall (fold :: Fold). Aggregator' fold (Expr Bool) (Expr Bool)
or
max :: Sql DBMax a => Aggregator1 (Expr a) (Expr a)
max :: forall a. Sql DBMax a => Aggregator1 (Expr a) (Expr a)
max =
(Expr a -> Field_ 'NonNullable Any)
-> (Field_ 'NonNullable Any -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator (Field_ 'NonNullable Any) (Field_ 'NonNullable Any)
-> Aggregator' 'Semi (Expr a) (Expr a)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(PrimExpr -> Field_ 'NonNullable Any
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable Any)
-> (Expr a -> PrimExpr) -> Expr a -> Field_ 'NonNullable Any
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr a -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr)
(PrimExpr -> Expr a
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr a)
-> (Field_ 'NonNullable Any -> PrimExpr)
-> Field_ 'NonNullable Any
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr a)
forall a. Fallback 'Semi a
Empty
Aggregator (Field_ 'NonNullable Any) (Field_ 'NonNullable Any)
forall a. Aggregator (Field a) (Field a)
Opaleye.unsafeMax
maxOn :: Sql DBMax a => (i -> Expr a) -> Aggregator1 i (Expr a)
maxOn :: forall a i. Sql DBMax a => (i -> Expr a) -> Aggregator1 i (Expr a)
maxOn i -> Expr a
f = (i -> Expr a)
-> Aggregator' 'Semi (Expr a) (Expr a)
-> Aggregator' 'Semi i (Expr a)
forall a b c.
(a -> b) -> Aggregator' 'Semi b c -> Aggregator' 'Semi a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f Aggregator' 'Semi (Expr a) (Expr a)
forall a. Sql DBMax a => Aggregator1 (Expr a) (Expr a)
max
min :: Sql DBMin a => Aggregator1 (Expr a) (Expr a)
min :: forall a. Sql DBMin a => Aggregator1 (Expr a) (Expr a)
min =
(Expr a -> Field_ 'NonNullable Any)
-> (Field_ 'NonNullable Any -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator (Field_ 'NonNullable Any) (Field_ 'NonNullable Any)
-> Aggregator' 'Semi (Expr a) (Expr a)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(PrimExpr -> Field_ 'NonNullable Any
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable Any)
-> (Expr a -> PrimExpr) -> Expr a -> Field_ 'NonNullable Any
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr a -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr)
(PrimExpr -> Expr a
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr a)
-> (Field_ 'NonNullable Any -> PrimExpr)
-> Field_ 'NonNullable Any
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr a)
forall a. Fallback 'Semi a
Empty
Aggregator (Field_ 'NonNullable Any) (Field_ 'NonNullable Any)
forall a. Aggregator (Field a) (Field a)
Opaleye.unsafeMin
minOn :: Sql DBMin a => (i -> Expr a) -> Aggregator1 i (Expr a)
minOn :: forall a i. Sql DBMin a => (i -> Expr a) -> Aggregator1 i (Expr a)
minOn i -> Expr a
f = (i -> Expr a)
-> Aggregator' 'Semi (Expr a) (Expr a)
-> Aggregator' 'Semi i (Expr a)
forall a b c.
(a -> b) -> Aggregator' 'Semi b c -> Aggregator' 'Semi a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f Aggregator' 'Semi (Expr a) (Expr a)
forall a. Sql DBMin a => Aggregator1 (Expr a) (Expr a)
min
sum :: (Sql DBNum a, Sql DBSum a) => Aggregator' fold (Expr a) (Expr a)
sum :: forall a (fold :: Fold).
(Sql DBNum a, Sql DBSum a) =>
Aggregator' fold (Expr a) (Expr a)
sum =
(Expr a -> Field_ 'NonNullable Any)
-> (Field_ 'NonNullable Any -> Expr a)
-> Fallback fold (Expr a)
-> Aggregator (Field_ 'NonNullable Any) (Field_ 'NonNullable Any)
-> Aggregator' fold (Expr a) (Expr a)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(PrimExpr -> Field_ 'NonNullable Any
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable Any)
-> (Expr a -> PrimExpr) -> Expr a -> Field_ 'NonNullable Any
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr a -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr)
(PrimExpr -> Expr a
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr a)
-> (Field_ 'NonNullable Any -> PrimExpr)
-> Field_ 'NonNullable Any
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
(Expr a -> Fallback fold (Expr a)
forall a (fold :: Fold). a -> Fallback fold a
Fallback Expr a
0)
Aggregator (Field_ 'NonNullable Any) (Field_ 'NonNullable Any)
forall a. Aggregator (Field a) (Field a)
Opaleye.unsafeSum
sumOn :: (Sql DBNum a, Sql DBSum a)
=> (i -> Expr a) -> Aggregator' fold i (Expr a)
sumOn :: forall a i (fold :: Fold).
(Sql DBNum a, Sql DBSum a) =>
(i -> Expr a) -> Aggregator' fold i (Expr a)
sumOn i -> Expr a
f = (i -> Expr a)
-> Aggregator' fold (Expr a) (Expr a)
-> Aggregator' fold i (Expr a)
forall a b c.
(a -> b) -> Aggregator' fold b c -> Aggregator' fold a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f Aggregator' fold (Expr a) (Expr a)
forall a (fold :: Fold).
(Sql DBNum a, Sql DBSum a) =>
Aggregator' fold (Expr a) (Expr a)
sum
sumWhere :: (Sql DBNum a, Sql DBSum a)
=> (i -> Expr Bool) -> (i -> Expr a) -> Aggregator' fold i (Expr a)
sumWhere :: forall a i (fold :: Fold).
(Sql DBNum a, Sql DBSum a) =>
(i -> Expr Bool) -> (i -> Expr a) -> Aggregator' fold i (Expr a)
sumWhere i -> Expr Bool
condition = IfPP (Expr a) (Expr a)
-> (i -> Expr Bool)
-> Aggregator i (Expr a)
-> Aggregator' fold i (Expr a)
forall a i (fold :: Fold).
IfPP a a
-> (i -> Expr Bool) -> Aggregator i a -> Aggregator' fold i a
filterWhereExplicit IfPP (Expr a) (Expr a)
forall a. IfPP (Expr a) (Expr a)
ifPP i -> Expr Bool
condition (Aggregator i (Expr a) -> Aggregator' fold i (Expr a))
-> ((i -> Expr a) -> Aggregator i (Expr a))
-> (i -> Expr a)
-> Aggregator' fold i (Expr a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (i -> Expr a) -> Aggregator i (Expr a)
forall a i (fold :: Fold).
(Sql DBNum a, Sql DBSum a) =>
(i -> Expr a) -> Aggregator' fold i (Expr a)
sumOn
avg :: Sql DBSum a => Aggregator1 (Expr a) (Expr a)
avg :: forall a. Sql DBSum a => Aggregator1 (Expr a) (Expr a)
avg =
(Expr a -> Field_ 'NonNullable Any)
-> (Field_ 'NonNullable Any -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator (Field_ 'NonNullable Any) (Field_ 'NonNullable Any)
-> Aggregator' 'Semi (Expr a) (Expr a)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(PrimExpr -> Field_ 'NonNullable Any
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable Any)
-> (Expr a -> PrimExpr) -> Expr a -> Field_ 'NonNullable Any
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr a -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr)
(PrimExpr -> Expr a
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr a)
-> (Field_ 'NonNullable Any -> PrimExpr)
-> Field_ 'NonNullable Any
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr a)
forall a. Fallback 'Semi a
Empty
Aggregator (Field_ 'NonNullable Any) (Field_ 'NonNullable Any)
forall a. Aggregator (Field a) (Field a)
Opaleye.unsafeAvg
avgOn :: Sql DBSum a => (i -> Expr a) -> Aggregator1 i (Expr a)
avgOn :: forall a i. Sql DBSum a => (i -> Expr a) -> Aggregator1 i (Expr a)
avgOn i -> Expr a
f = (i -> Expr a)
-> Aggregator' 'Semi (Expr a) (Expr a)
-> Aggregator' 'Semi i (Expr a)
forall a b c.
(a -> b) -> Aggregator' 'Semi b c -> Aggregator' 'Semi a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f Aggregator' 'Semi (Expr a) (Expr a)
forall a. Sql DBSum a => Aggregator1 (Expr a) (Expr a)
avg
stringAgg :: (Sql IsString a, Sql DBString a)
=> Expr a -> Aggregator' fold (Expr a) (Expr a)
stringAgg :: forall a (fold :: Fold).
(Sql IsString a, Sql DBString a) =>
Expr a -> Aggregator' fold (Expr a) (Expr a)
stringAgg Expr a
delimiter =
(Expr a -> Field_ 'NonNullable SqlText)
-> (Field_ 'NonNullable SqlText -> Expr a)
-> Fallback fold (Expr a)
-> Aggregator
(Field_ 'NonNullable SqlText) (Field_ 'NonNullable SqlText)
-> Aggregator' fold (Expr a) (Expr a)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(PrimExpr -> Field_ 'NonNullable SqlText
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable SqlText)
-> (Expr a -> PrimExpr) -> Expr a -> Field_ 'NonNullable SqlText
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr a -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr)
(Expr a -> Expr a
forall a. Sql DBType a => Expr a -> Expr a
castExpr (Expr a -> Expr a)
-> (Field_ 'NonNullable SqlText -> Expr a)
-> Field_ 'NonNullable SqlText
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PrimExpr -> Expr a
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr a)
-> (Field_ 'NonNullable SqlText -> PrimExpr)
-> Field_ 'NonNullable SqlText
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable SqlText -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
(Expr a -> Fallback fold (Expr a)
forall a (fold :: Fold). a -> Fallback fold a
Fallback Expr a
"")
(Field_ 'NonNullable SqlText
-> Aggregator
(Field_ 'NonNullable SqlText) (Field_ 'NonNullable SqlText)
Opaleye.stringAgg (PrimExpr -> Field_ 'NonNullable SqlText
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (Expr a -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr Expr a
delimiter)))
stringAggOn :: (Sql IsString a, Sql DBString a)
=> Expr a -> (i -> Expr a) -> Aggregator' fold i (Expr a)
stringAggOn :: forall a i (fold :: Fold).
(Sql IsString a, Sql DBString a) =>
Expr a -> (i -> Expr a) -> Aggregator' fold i (Expr a)
stringAggOn Expr a
delimiter i -> Expr a
f = (i -> Expr a)
-> Aggregator' fold (Expr a) (Expr a)
-> Aggregator' fold i (Expr a)
forall a b c.
(a -> b) -> Aggregator' fold b c -> Aggregator' fold a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f (Expr a -> Aggregator' fold (Expr a) (Expr a)
forall a (fold :: Fold).
(Sql IsString a, Sql DBString a) =>
Expr a -> Aggregator' fold (Expr a) (Expr a)
stringAgg Expr a
delimiter)
mode :: Sql DBOrd a => Aggregator1 (Expr a) (Expr a)
mode :: forall a. Sql DBOrd a => Aggregator1 (Expr a) (Expr a)
mode =
(Expr a -> Expr a)
-> (Field_ Any Any -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator (Expr a) (Field_ Any Any)
-> Aggregator' 'Semi (Expr a) (Expr a)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
Expr a -> Expr a
forall a. a -> a
id
(PrimExpr -> Expr a
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr a)
-> (Field_ Any Any -> PrimExpr) -> Field_ Any Any -> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ Any Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr a)
forall a. Fallback 'Semi a
Empty
(Order (Expr a)
-> Aggregator (Expr a) (Field_ Any Any)
-> Aggregator (Expr a) (Field_ Any Any)
forall a b. Order a -> Aggregator a b -> Aggregator a b
Opaleye.withinGroup ((\(Order Order (Expr a)
o) -> Order (Expr a)
o) Order (Expr a)
forall a. OrdTable a => Order a
ascTable)
(Unpackspec (Expr a) ()
-> AggrOp -> Aggregator (Expr a) (Field_ Any Any)
forall a a' (n :: Nullability) b.
Unpackspec a a' -> AggrOp -> Aggregator a (Field_ n b)
Opaleye.makeAggrExplicit (() -> Unpackspec (Expr a) ()
forall a. a -> Unpackspec (Expr a) a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()) (String -> AggrOp
Opaleye.AggrOther String
"mode")))
modeOn :: Sql DBOrd a => (i -> Expr a) -> Aggregator1 i (Expr a)
modeOn :: forall a i. Sql DBOrd a => (i -> Expr a) -> Aggregator1 i (Expr a)
modeOn i -> Expr a
f = (i -> Expr a)
-> Aggregator' 'Semi (Expr a) (Expr a)
-> Aggregator' 'Semi i (Expr a)
forall a b c.
(a -> b) -> Aggregator' 'Semi b c -> Aggregator' 'Semi a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f Aggregator' 'Semi (Expr a) (Expr a)
forall a. Sql DBOrd a => Aggregator1 (Expr a) (Expr a)
mode
percentile :: Sql DBOrd a => Expr Double -> Aggregator1 (Expr a) (Expr a)
percentile :: forall a.
Sql DBOrd a =>
Expr Double -> Aggregator1 (Expr a) (Expr a)
percentile Expr Double
fraction =
(Expr a -> (Expr Double, Expr a))
-> (Field_ Any Any -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator (Expr Double, Expr a) (Field_ Any Any)
-> Aggregator' 'Semi (Expr a) (Expr a)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(\Expr a
a -> (Expr Double
fraction, Expr a
a))
(Expr a -> Expr a
forall a. Sql DBType a => Expr a -> Expr a
castExpr (Expr a -> Expr a)
-> (Field_ Any Any -> Expr a) -> Field_ Any Any -> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PrimExpr -> Expr a
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr a)
-> (Field_ Any Any -> PrimExpr) -> Field_ Any Any -> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ Any Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr a)
forall a. Fallback 'Semi a
Empty
(Order (Expr Double, Expr a)
-> Aggregator (Expr Double, Expr a) (Field_ Any Any)
-> Aggregator (Expr Double, Expr a) (Field_ Any Any)
forall a b. Order a -> Aggregator a b -> Aggregator a b
Opaleye.withinGroup ((\(Order Order (Expr Double, Expr a)
o) -> Order (Expr Double, Expr a)
o) ((Expr Double, Expr a) -> Expr a
forall a b. (a, b) -> b
snd ((Expr Double, Expr a) -> Expr a)
-> Order (Expr a) -> Order (Expr Double, Expr a)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Order (Expr a)
forall a. OrdTable a => Order a
ascTable))
(Unpackspec (Expr Double, Expr a) (Expr Double)
-> AggrOp -> Aggregator (Expr Double, Expr a) (Field_ Any Any)
forall a a' (n :: Nullability) b.
Unpackspec a a' -> AggrOp -> Aggregator a (Field_ n b)
Opaleye.makeAggrExplicit
(((Expr Double, Expr a) -> Expr Double)
-> Unpackspec (Expr Double) (Expr Double)
-> Unpackspec (Expr Double, Expr a) (Expr Double)
forall a b c. (a -> b) -> Unpackspec b c -> Unpackspec a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap (Expr Double, Expr a) -> Expr Double
forall a b. (a, b) -> a
fst Unpackspec (Expr Double) (Expr Double)
forall a. Table Expr a => Unpackspec a a
unpackspec)
(String -> AggrOp
Opaleye.AggrOther String
"percentile_disc")))
percentileOn ::
Sql DBOrd a =>
Expr Double ->
(i -> Expr a) ->
Aggregator1 i (Expr a)
percentileOn :: forall a i.
Sql DBOrd a =>
Expr Double -> (i -> Expr a) -> Aggregator1 i (Expr a)
percentileOn Expr Double
fraction i -> Expr a
f = (i -> Expr a)
-> Aggregator' 'Semi (Expr a) (Expr a)
-> Aggregator' 'Semi i (Expr a)
forall a b c.
(a -> b) -> Aggregator' 'Semi b c -> Aggregator' 'Semi a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f (Expr Double -> Aggregator' 'Semi (Expr a) (Expr a)
forall a.
Sql DBOrd a =>
Expr Double -> Aggregator1 (Expr a) (Expr a)
percentile Expr Double
fraction)
percentileContinuous ::
Sql DBFractional a =>
Expr Double ->
Aggregator1 (Expr a) (Expr a)
percentileContinuous :: forall a.
Sql DBFractional a =>
Expr Double -> Aggregator1 (Expr a) (Expr a)
percentileContinuous Expr Double
fraction =
(Expr a -> (Expr Double, Expr a))
-> (Field_ Any Any -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator (Expr Double, Expr a) (Field_ Any Any)
-> Aggregator' 'Semi (Expr a) (Expr a)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(\Expr a
a -> (Expr Double
fraction, Expr a
a))
(Expr a -> Expr a
forall a. Sql DBType a => Expr a -> Expr a
castExpr (Expr a -> Expr a)
-> (Field_ Any Any -> Expr a) -> Field_ Any Any -> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PrimExpr -> Expr a
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr a)
-> (Field_ Any Any -> PrimExpr) -> Field_ Any Any -> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ Any Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr a)
forall a. Fallback 'Semi a
Empty
(Order (Expr Double, Expr a)
-> Aggregator (Expr Double, Expr a) (Field_ Any Any)
-> Aggregator (Expr Double, Expr a) (Field_ Any Any)
forall a b. Order a -> Aggregator a b -> Aggregator a b
Opaleye.withinGroup ((\(Order Order (Expr Double, Expr a)
o) -> Order (Expr Double, Expr a)
o) (forall b a. Sql DBType b => Expr a -> Expr b
unsafeCastExpr @Double (Expr a -> Expr Double)
-> ((Expr Double, Expr a) -> Expr a)
-> (Expr Double, Expr a)
-> Expr Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Expr Double, Expr a) -> Expr a
forall a b. (a, b) -> b
snd ((Expr Double, Expr a) -> Expr Double)
-> Order (Expr Double) -> Order (Expr Double, Expr a)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Order (Expr Double)
forall a. DBOrd a => Order (Expr a)
asc))
(Unpackspec (Expr Double, Expr a) (Expr Double)
-> AggrOp -> Aggregator (Expr Double, Expr a) (Field_ Any Any)
forall a a' (n :: Nullability) b.
Unpackspec a a' -> AggrOp -> Aggregator a (Field_ n b)
Opaleye.makeAggrExplicit
(((Expr Double, Expr a) -> Expr Double)
-> Unpackspec (Expr Double) (Expr Double)
-> Unpackspec (Expr Double, Expr a) (Expr Double)
forall a b c. (a -> b) -> Unpackspec b c -> Unpackspec a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap (Expr Double, Expr a) -> Expr Double
forall a b. (a, b) -> a
fst Unpackspec (Expr Double) (Expr Double)
forall a. Table Expr a => Unpackspec a a
unpackspec)
(String -> AggrOp
Opaleye.AggrOther String
"percentile_disc")))
percentileContinuousOn ::
Sql DBFractional a =>
Expr Double ->
(i -> Expr a) ->
Aggregator1 i (Expr a)
percentileContinuousOn :: forall a i.
Sql DBFractional a =>
Expr Double -> (i -> Expr a) -> Aggregator1 i (Expr a)
percentileContinuousOn Expr Double
fraction i -> Expr a
f = (i -> Expr a)
-> Aggregator' 'Semi (Expr a) (Expr a)
-> Aggregator' 'Semi i (Expr a)
forall a b c.
(a -> b) -> Aggregator' 'Semi b c -> Aggregator' 'Semi a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f (Expr Double -> Aggregator' 'Semi (Expr a) (Expr a)
forall a.
Sql DBFractional a =>
Expr Double -> Aggregator1 (Expr a) (Expr a)
percentileContinuous Expr Double
fraction)
hypotheticalRank ::
Order a ->
a ->
Aggregator' fold a (Expr Int64)
hypotheticalRank :: forall a (fold :: Fold).
Order a -> a -> Aggregator' fold a (Expr Int64)
hypotheticalRank (Order Order a
order) a
args =
(a -> (a, a))
-> (Field_ Any Any -> Expr Int64)
-> Fallback fold (Expr Int64)
-> Aggregator (a, a) (Field_ Any Any)
-> Aggregator' fold a (Expr Int64)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(\a
a -> (a
args, a
a))
(Expr Int64 -> Expr Int64
forall a. Sql DBType a => Expr a -> Expr a
castExpr (Expr Int64 -> Expr Int64)
-> (Field_ Any Any -> Expr Int64) -> Field_ Any Any -> Expr Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PrimExpr -> Expr Int64
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr Int64)
-> (Field_ Any Any -> PrimExpr) -> Field_ Any Any -> Expr Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ Any Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
(Expr Int64 -> Fallback fold (Expr Int64)
forall a (fold :: Fold). a -> Fallback fold a
Fallback Expr Int64
1)
(Order (a, a)
-> Aggregator (a, a) (Field_ Any Any)
-> Aggregator (a, a) (Field_ Any Any)
forall a b. Order a -> Aggregator a b -> Aggregator a b
Opaleye.withinGroup ((a, a) -> a
forall a b. (a, b) -> b
snd ((a, a) -> a) -> Order a -> Order (a, a)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Order a
order)
(Unpackspec (a, a) (a, a)
-> AggrOp -> Aggregator (a, a) (Field_ Any Any)
forall a a' (n :: Nullability) b.
Unpackspec a a' -> AggrOp -> Aggregator a (Field_ n b)
Opaleye.makeAggrExplicit
(Order (a, a) -> Unpackspec (a, a) (a, a)
forall a. Order a -> Unpackspec a a
fromOrder ((a, a) -> a
forall a b. (a, b) -> a
fst ((a, a) -> a) -> Order a -> Order (a, a)
forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a
>$< Order a
order))
(String -> AggrOp
Opaleye.AggrOther String
"rank")))
hypotheticalDenseRank ::
Order a ->
a ->
Aggregator' fold a (Expr Int64)
hypotheticalDenseRank :: forall a (fold :: Fold).
Order a -> a -> Aggregator' fold a (Expr Int64)
hypotheticalDenseRank (Order Order a
order) a
args =
(a -> a)
-> (Field_ Any Any -> Expr Int64)
-> Fallback fold (Expr Int64)
-> Aggregator a (Field_ Any Any)
-> Aggregator' fold a (Expr Int64)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(a -> a -> a
forall a b. a -> b -> a
const a
args)
(Expr Int64 -> Expr Int64
forall a. Sql DBType a => Expr a -> Expr a
castExpr (Expr Int64 -> Expr Int64)
-> (Field_ Any Any -> Expr Int64) -> Field_ Any Any -> Expr Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PrimExpr -> Expr Int64
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr Int64)
-> (Field_ Any Any -> PrimExpr) -> Field_ Any Any -> Expr Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ Any Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
(Expr Int64 -> Fallback fold (Expr Int64)
forall a (fold :: Fold). a -> Fallback fold a
Fallback Expr Int64
1)
(Order a
-> Aggregator a (Field_ Any Any) -> Aggregator a (Field_ Any Any)
forall a b. Order a -> Aggregator a b -> Aggregator a b
Opaleye.withinGroup Order a
order
(Unpackspec a a -> AggrOp -> Aggregator a (Field_ Any Any)
forall a a' (n :: Nullability) b.
Unpackspec a a' -> AggrOp -> Aggregator a (Field_ n b)
Opaleye.makeAggrExplicit (Order a -> Unpackspec a a
forall a. Order a -> Unpackspec a a
fromOrder Order a
order)
(String -> AggrOp
Opaleye.AggrOther String
"dense_rank")))
hypotheticalPercentRank ::
Order a ->
a ->
Aggregator' fold a (Expr Double)
hypotheticalPercentRank :: forall a (fold :: Fold).
Order a -> a -> Aggregator' fold a (Expr Double)
hypotheticalPercentRank (Order Order a
order) a
args =
(a -> a)
-> (Field_ Any Any -> Expr Double)
-> Fallback fold (Expr Double)
-> Aggregator a (Field_ Any Any)
-> Aggregator' fold a (Expr Double)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(a -> a -> a
forall a b. a -> b -> a
const a
args)
(Expr Double -> Expr Double
forall a. Sql DBType a => Expr a -> Expr a
castExpr (Expr Double -> Expr Double)
-> (Field_ Any Any -> Expr Double) -> Field_ Any Any -> Expr Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PrimExpr -> Expr Double
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr Double)
-> (Field_ Any Any -> PrimExpr) -> Field_ Any Any -> Expr Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ Any Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
(Expr Double -> Fallback fold (Expr Double)
forall a (fold :: Fold). a -> Fallback fold a
Fallback Expr Double
0)
(Order a
-> Aggregator a (Field_ Any Any) -> Aggregator a (Field_ Any Any)
forall a b. Order a -> Aggregator a b -> Aggregator a b
Opaleye.withinGroup Order a
order
(Unpackspec a a -> AggrOp -> Aggregator a (Field_ Any Any)
forall a a' (n :: Nullability) b.
Unpackspec a a' -> AggrOp -> Aggregator a (Field_ n b)
Opaleye.makeAggrExplicit (Order a -> Unpackspec a a
forall a. Order a -> Unpackspec a a
fromOrder Order a
order)
(String -> AggrOp
Opaleye.AggrOther String
"percent_rank")))
hypotheticalCumeDist ::
Order a ->
a ->
Aggregator' fold a (Expr Double)
hypotheticalCumeDist :: forall a (fold :: Fold).
Order a -> a -> Aggregator' fold a (Expr Double)
hypotheticalCumeDist (Order Order a
order) a
args =
(a -> a)
-> (Field_ Any Any -> Expr Double)
-> Fallback fold (Expr Double)
-> Aggregator a (Field_ Any Any)
-> Aggregator' fold a (Expr Double)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(a -> a -> a
forall a b. a -> b -> a
const a
args)
(Expr Double -> Expr Double
forall a. Sql DBType a => Expr a -> Expr a
castExpr (Expr Double -> Expr Double)
-> (Field_ Any Any -> Expr Double) -> Field_ Any Any -> Expr Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PrimExpr -> Expr Double
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr Double)
-> (Field_ Any Any -> PrimExpr) -> Field_ Any Any -> Expr Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ Any Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
(Expr Double -> Fallback fold (Expr Double)
forall a (fold :: Fold). a -> Fallback fold a
Fallback Expr Double
1)
(Order a
-> Aggregator a (Field_ Any Any) -> Aggregator a (Field_ Any Any)
forall a b. Order a -> Aggregator a b -> Aggregator a b
Opaleye.withinGroup Order a
order
(Unpackspec a a -> AggrOp -> Aggregator a (Field_ Any Any)
forall a a' (n :: Nullability) b.
Unpackspec a a' -> AggrOp -> Aggregator a (Field_ n b)
Opaleye.makeAggrExplicit (Order a -> Unpackspec a a
forall a. Order a -> Unpackspec a a
fromOrder Order a
order)
(String -> AggrOp
Opaleye.AggrOther String
"cume_dist")))
groupByExpr :: Sql DBEq a => Aggregator1 (Expr a) (Expr a)
groupByExpr :: forall a. Sql DBEq a => Aggregator1 (Expr a) (Expr a)
groupByExpr =
(Expr a -> Field_ Any Any)
-> (Field_ Any Any -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator (Field_ Any Any) (Field_ Any Any)
-> Aggregator' 'Semi (Expr a) (Expr a)
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(PrimExpr -> Field_ Any Any
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ Any Any)
-> (Expr a -> PrimExpr) -> Expr a -> Field_ Any Any
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr a -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr)
(PrimExpr -> Expr a
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr a)
-> (Field_ Any Any -> PrimExpr) -> Field_ Any Any -> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ Any Any -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr a)
forall a. Fallback 'Semi a
Empty
Aggregator (Field_ Any Any) (Field_ Any Any)
forall (n :: Nullability) a. Aggregator (Field_ n a) (Field_ n a)
Opaleye.groupBy
groupByExprOn :: Sql DBEq a => (i -> Expr a) -> Aggregator1 i (Expr a)
groupByExprOn :: forall a i. Sql DBEq a => (i -> Expr a) -> Aggregator1 i (Expr a)
groupByExprOn i -> Expr a
f = (i -> Expr a)
-> Aggregator' 'Semi (Expr a) (Expr a)
-> Aggregator' 'Semi i (Expr a)
forall a b c.
(a -> b) -> Aggregator' 'Semi b c -> Aggregator' 'Semi a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f Aggregator' 'Semi (Expr a) (Expr a)
forall a. Sql DBEq a => Aggregator1 (Expr a) (Expr a)
groupByExpr
listAggExpr :: Sql DBType a => Aggregator' fold (Expr a) (Expr [a])
listAggExpr :: forall a (fold :: Fold).
Sql DBType a =>
Aggregator' fold (Expr a) (Expr [a])
listAggExpr = TypeInformation (Unnullify' (IsMaybe a) a)
-> Aggregator' fold (Expr a) (Expr [a])
forall a (fold :: Fold).
TypeInformation (Unnullify a)
-> Aggregator' fold (Expr a) (Expr [a])
slistAggExpr TypeInformation (Unnullify' (IsMaybe a) a)
forall a. DBType a => TypeInformation a
typeInformation
listAggExprOn :: Sql DBType a => (i -> Expr a) -> Aggregator' fold i (Expr [a])
listAggExprOn :: forall a i (fold :: Fold).
Sql DBType a =>
(i -> Expr a) -> Aggregator' fold i (Expr [a])
listAggExprOn i -> Expr a
f = (i -> Expr a)
-> Aggregator' fold (Expr a) (Expr [a])
-> Aggregator' fold i (Expr [a])
forall a b c.
(a -> b) -> Aggregator' fold b c -> Aggregator' fold a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f Aggregator' fold (Expr a) (Expr [a])
forall a (fold :: Fold).
Sql DBType a =>
Aggregator' fold (Expr a) (Expr [a])
listAggExpr
nonEmptyAggExpr :: Sql DBType a => Aggregator1 (Expr a) (Expr (NonEmpty a))
nonEmptyAggExpr :: forall a. Sql DBType a => Aggregator1 (Expr a) (Expr (NonEmpty a))
nonEmptyAggExpr = TypeInformation (Unnullify' (IsMaybe a) a)
-> Aggregator1 (Expr a) (Expr (NonEmpty a))
forall a.
TypeInformation (Unnullify a)
-> Aggregator1 (Expr a) (Expr (NonEmpty a))
snonEmptyAggExpr TypeInformation (Unnullify' (IsMaybe a) a)
forall a. DBType a => TypeInformation a
typeInformation
nonEmptyAggExprOn :: Sql DBType a
=> (i -> Expr a) -> Aggregator1 i (Expr (NonEmpty a))
nonEmptyAggExprOn :: forall a i.
Sql DBType a =>
(i -> Expr a) -> Aggregator1 i (Expr (NonEmpty a))
nonEmptyAggExprOn i -> Expr a
f = (i -> Expr a)
-> Aggregator' 'Semi (Expr a) (Expr (NonEmpty a))
-> Aggregator' 'Semi i (Expr (NonEmpty a))
forall a b c.
(a -> b) -> Aggregator' 'Semi b c -> Aggregator' 'Semi a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr a
f Aggregator' 'Semi (Expr a) (Expr (NonEmpty a))
forall a. Sql DBType a => Aggregator1 (Expr a) (Expr (NonEmpty a))
nonEmptyAggExpr
listCatExpr :: Sql DBType a => Aggregator' fold (Expr [a]) (Expr [a])
listCatExpr :: forall a (fold :: Fold).
Sql DBType a =>
Aggregator' fold (Expr [a]) (Expr [a])
listCatExpr = TypeInformation (Unnullify' (IsMaybe a) a)
-> Aggregator' fold (Expr [a]) (Expr [a])
forall a (fold :: Fold).
TypeInformation (Unnullify a)
-> Aggregator' fold (Expr [a]) (Expr [a])
slistCatExpr TypeInformation (Unnullify' (IsMaybe a) a)
forall a. DBType a => TypeInformation a
typeInformation
listCatExprOn :: Sql DBType a
=> (i -> Expr [a]) -> Aggregator' fold i (Expr [a])
listCatExprOn :: forall a i (fold :: Fold).
Sql DBType a =>
(i -> Expr [a]) -> Aggregator' fold i (Expr [a])
listCatExprOn i -> Expr [a]
f = (i -> Expr [a])
-> Aggregator' fold (Expr [a]) (Expr [a])
-> Aggregator' fold i (Expr [a])
forall a b c.
(a -> b) -> Aggregator' fold b c -> Aggregator' fold a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr [a]
f Aggregator' fold (Expr [a]) (Expr [a])
forall a (fold :: Fold).
Sql DBType a =>
Aggregator' fold (Expr [a]) (Expr [a])
listCatExpr
nonEmptyCatExpr :: Sql DBType a
=> Aggregator1 (Expr (NonEmpty a)) (Expr (NonEmpty a))
nonEmptyCatExpr :: forall a.
Sql DBType a =>
Aggregator1 (Expr (NonEmpty a)) (Expr (NonEmpty a))
nonEmptyCatExpr = TypeInformation (Unnullify' (IsMaybe a) a)
-> Aggregator1 (Expr (NonEmpty a)) (Expr (NonEmpty a))
forall a.
TypeInformation (Unnullify a)
-> Aggregator1 (Expr (NonEmpty a)) (Expr (NonEmpty a))
snonEmptyCatExpr TypeInformation (Unnullify' (IsMaybe a) a)
forall a. DBType a => TypeInformation a
typeInformation
nonEmptyCatExprOn :: Sql DBType a
=> (i -> Expr (NonEmpty a)) -> Aggregator1 i (Expr (NonEmpty a))
nonEmptyCatExprOn :: forall a i.
Sql DBType a =>
(i -> Expr (NonEmpty a)) -> Aggregator1 i (Expr (NonEmpty a))
nonEmptyCatExprOn i -> Expr (NonEmpty a)
f = (i -> Expr (NonEmpty a))
-> Aggregator' 'Semi (Expr (NonEmpty a)) (Expr (NonEmpty a))
-> Aggregator' 'Semi i (Expr (NonEmpty a))
forall a b c.
(a -> b) -> Aggregator' 'Semi b c -> Aggregator' 'Semi a c
forall (p :: * -> * -> *) a b c.
Profunctor p =>
(a -> b) -> p b c -> p a c
lmap i -> Expr (NonEmpty a)
f Aggregator' 'Semi (Expr (NonEmpty a)) (Expr (NonEmpty a))
forall a.
Sql DBType a =>
Aggregator1 (Expr (NonEmpty a)) (Expr (NonEmpty a))
nonEmptyCatExpr
distinctAggregate :: Aggregator' fold i a -> Aggregator' fold i a
distinctAggregate :: forall (fold :: Fold) i a.
Aggregator' fold i a -> Aggregator' fold i a
distinctAggregate (Aggregator Fallback fold a
fallback Aggregator i a
a) =
Fallback fold a -> Aggregator i a -> Aggregator' fold i a
forall (fold :: Fold) i a.
Fallback fold a -> Aggregator i a -> Aggregator' fold i a
Aggregator Fallback fold a
fallback (Aggregator i a -> Aggregator i a
forall a b. Aggregator a b -> Aggregator a b
Opaleye.distinctAggregator Aggregator i a
a)
slistAggExpr :: ()
=> TypeInformation (Unnullify a) -> Aggregator' fold (Expr a) (Expr [a])
slistAggExpr :: forall a (fold :: Fold).
TypeInformation (Unnullify a)
-> Aggregator' fold (Expr a) (Expr [a])
slistAggExpr TypeInformation (Unnullify a)
info =
(Expr a -> Field_ 'NonNullable Any)
-> (Field_ 'NonNullable (SqlArray Any) -> Expr [a])
-> Fallback fold (Expr [a])
-> Aggregator
(Field_ 'NonNullable Any) (Field_ 'NonNullable (SqlArray Any))
-> Aggregator' fold (Expr a) (Expr [a])
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(PrimExpr -> Field_ 'NonNullable Any
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable Any)
-> (Expr a -> PrimExpr) -> Expr a -> Field_ 'NonNullable Any
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeInformation (Unnullify a) -> PrimExpr -> PrimExpr
forall a. TypeInformation a -> PrimExpr -> PrimExpr
encodeArrayElement TypeInformation (Unnullify a)
info (PrimExpr -> PrimExpr)
-> (Expr a -> PrimExpr) -> Expr a -> PrimExpr
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr a -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr)
(PrimExpr -> Expr [a]
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr [a])
-> (Field_ 'NonNullable (SqlArray Any) -> PrimExpr)
-> Field_ 'NonNullable (SqlArray Any)
-> Expr [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable (SqlArray Any) -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
(Expr [a] -> Fallback fold (Expr [a])
forall a (fold :: Fold). a -> Fallback fold a
Fallback (TypeInformation (Unnullify a) -> Expr [a]
forall a. TypeInformation (Unnullify a) -> Expr [a]
sempty TypeInformation (Unnullify a)
info))
Aggregator
(Field_ 'NonNullable Any) (Field_ 'NonNullable (SqlArray Any))
forall a. Aggregator (Field a) (Field (SqlArray a))
Opaleye.arrayAgg
snonEmptyAggExpr :: ()
=> TypeInformation (Unnullify a) -> Aggregator1 (Expr a) (Expr (NonEmpty a))
snonEmptyAggExpr :: forall a.
TypeInformation (Unnullify a)
-> Aggregator1 (Expr a) (Expr (NonEmpty a))
snonEmptyAggExpr TypeInformation (Unnullify a)
info =
(Expr a -> Field_ 'NonNullable Any)
-> (Field_ 'NonNullable (SqlArray Any) -> Expr (NonEmpty a))
-> Fallback 'Semi (Expr (NonEmpty a))
-> Aggregator
(Field_ 'NonNullable Any) (Field_ 'NonNullable (SqlArray Any))
-> Aggregator' 'Semi (Expr a) (Expr (NonEmpty a))
forall i o (fold :: Fold) i' o'.
(i -> i')
-> (o' -> o)
-> Fallback fold o
-> Aggregator i' o'
-> Aggregator' fold i o
unsafeMakeAggregator
(PrimExpr -> Field_ 'NonNullable Any
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable Any)
-> (Expr a -> PrimExpr) -> Expr a -> Field_ 'NonNullable Any
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeInformation (Unnullify a) -> PrimExpr -> PrimExpr
forall a. TypeInformation a -> PrimExpr -> PrimExpr
encodeArrayElement TypeInformation (Unnullify a)
info (PrimExpr -> PrimExpr)
-> (Expr a -> PrimExpr) -> Expr a -> PrimExpr
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr a -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr)
(PrimExpr -> Expr (NonEmpty a)
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr (NonEmpty a))
-> (Field_ 'NonNullable (SqlArray Any) -> PrimExpr)
-> Field_ 'NonNullable (SqlArray Any)
-> Expr (NonEmpty a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable (SqlArray Any) -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr (NonEmpty a))
forall a. Fallback 'Semi a
Empty
Aggregator
(Field_ 'NonNullable Any) (Field_ 'NonNullable (SqlArray Any))
forall a. Aggregator (Field a) (Field (SqlArray a))
Opaleye.arrayAgg
slistCatExpr :: ()
=> TypeInformation (Unnullify a) -> Aggregator' fold (Expr [a]) (Expr [a])
slistCatExpr :: forall a (fold :: Fold).
TypeInformation (Unnullify a)
-> Aggregator' fold (Expr [a]) (Expr [a])
slistCatExpr TypeInformation (Unnullify a)
info = (Expr [a] -> Expr Text)
-> (Expr Text -> Expr [a])
-> Aggregator' fold (Expr Text) (Expr Text)
-> Aggregator' fold (Expr [a]) (Expr [a])
forall a b c d.
(a -> b)
-> (c -> d) -> Aggregator' fold b c -> Aggregator' fold a d
forall (p :: * -> * -> *) a b c d.
Profunctor p =>
(a -> b) -> (c -> d) -> p b c -> p a d
dimap (Expr Text -> Expr Text
unbracket (Expr Text -> Expr Text)
-> (Expr [a] -> Expr Text) -> Expr [a] -> Expr Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr [a] -> Expr Text
forall a. Expr a -> Expr Text
show) (TypeName -> Expr Text -> Expr [a]
forall a. TypeName -> Expr Text -> Expr a
sread TypeName
name (Expr Text -> Expr [a])
-> (Expr Text -> Expr Text) -> Expr Text -> Expr [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr Text -> Expr Text
forall {a}. (Semigroup a, IsString a) => a -> a
bracket) Aggregator' fold (Expr Text) (Expr Text)
forall {fold :: Fold}. Aggregator' fold (Expr Text) (Expr Text)
agg
where
bracket :: a -> a
bracket a
a = a
"{" a -> a -> a
forall a. Semigroup a => a -> a -> a
<> a
a a -> a -> a
forall a. Semigroup a => a -> a -> a
<> a
"}"
unbracket :: Expr Text -> Expr Text
unbracket Expr Text
a = Expr Text -> Expr Int32 -> Maybe (Expr Int32) -> Expr Text
Text.substr Expr Text
a Expr Int32
2 (Expr Int32 -> Maybe (Expr Int32)
forall a. a -> Maybe a
Just (Expr Text -> Expr Int32
Text.length Expr Text
a Expr Int32 -> Expr Int32 -> Expr Int32
forall a. Num a => a -> a -> a
- Expr Int32
2))
agg :: Aggregator' fold (Expr Text) (Expr Text)
agg = IfPP (Expr Text) (Expr Text)
-> (Expr Text -> Expr Bool)
-> Aggregator (Expr Text) (Expr Text)
-> Aggregator' fold (Expr Text) (Expr Text)
forall a i (fold :: Fold).
IfPP a a
-> (i -> Expr Bool) -> Aggregator i a -> Aggregator' fold i a
filterWhereExplicit IfPP (Expr Text) (Expr Text)
forall a. IfPP (Expr a) (Expr a)
ifPP (Expr Text -> Expr Text -> Expr Bool
forall a. Sql DBEq a => Expr a -> Expr a -> Expr Bool
/=. Expr Text
"") (Expr Text -> Aggregator (Expr Text) (Expr Text)
forall a (fold :: Fold).
(Sql IsString a, Sql DBString a) =>
Expr a -> Aggregator' fold (Expr a) (Expr a)
stringAgg Expr Text
",")
name :: TypeName
name = TypeInformation (Unnullify a) -> TypeName
forall a. TypeInformation a -> TypeName
arrayTypeName TypeInformation (Unnullify a)
info
snonEmptyCatExpr :: ()
=> TypeInformation (Unnullify a)
-> Aggregator1 (Expr (NonEmpty a)) (Expr (NonEmpty a))
snonEmptyCatExpr :: forall a.
TypeInformation (Unnullify a)
-> Aggregator1 (Expr (NonEmpty a)) (Expr (NonEmpty a))
snonEmptyCatExpr TypeInformation (Unnullify a)
info = (Expr (NonEmpty a) -> Expr Text)
-> (Expr Text -> Expr (NonEmpty a))
-> Aggregator' 'Semi (Expr Text) (Expr Text)
-> Aggregator' 'Semi (Expr (NonEmpty a)) (Expr (NonEmpty a))
forall a b c d.
(a -> b)
-> (c -> d) -> Aggregator' 'Semi b c -> Aggregator' 'Semi a d
forall (p :: * -> * -> *) a b c d.
Profunctor p =>
(a -> b) -> (c -> d) -> p b c -> p a d
dimap (Expr Text -> Expr Text
unbracket (Expr Text -> Expr Text)
-> (Expr (NonEmpty a) -> Expr Text)
-> Expr (NonEmpty a)
-> Expr Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr (NonEmpty a) -> Expr Text
forall a. Expr a -> Expr Text
show) (TypeName -> Expr Text -> Expr (NonEmpty a)
forall a. TypeName -> Expr Text -> Expr a
sread TypeName
name (Expr Text -> Expr (NonEmpty a))
-> (Expr Text -> Expr Text) -> Expr Text -> Expr (NonEmpty a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr Text -> Expr Text
forall {a}. (Semigroup a, IsString a) => a -> a
bracket) Aggregator' 'Semi (Expr Text) (Expr Text)
forall {fold :: Fold}. Aggregator' fold (Expr Text) (Expr Text)
agg
where
bracket :: a -> a
bracket a
a = a
"{" a -> a -> a
forall a. Semigroup a => a -> a -> a
<> a
a a -> a -> a
forall a. Semigroup a => a -> a -> a
<> a
"}"
unbracket :: Expr Text -> Expr Text
unbracket Expr Text
a = Expr Text -> Expr Int32 -> Maybe (Expr Int32) -> Expr Text
Text.substr Expr Text
a Expr Int32
2 (Expr Int32 -> Maybe (Expr Int32)
forall a. a -> Maybe a
Just (Expr Text -> Expr Int32
Text.length Expr Text
a Expr Int32 -> Expr Int32 -> Expr Int32
forall a. Num a => a -> a -> a
- Expr Int32
2))
agg :: Aggregator' fold (Expr Text) (Expr Text)
agg = IfPP (Expr Text) (Expr Text)
-> (Expr Text -> Expr Bool)
-> Aggregator (Expr Text) (Expr Text)
-> Aggregator' fold (Expr Text) (Expr Text)
forall a i (fold :: Fold).
IfPP a a
-> (i -> Expr Bool) -> Aggregator i a -> Aggregator' fold i a
filterWhereExplicit IfPP (Expr Text) (Expr Text)
forall a. IfPP (Expr a) (Expr a)
ifPP (Expr Text -> Expr Text -> Expr Bool
forall a. Sql DBEq a => Expr a -> Expr a -> Expr Bool
/=. Expr Text
"") (Expr Text -> Aggregator (Expr Text) (Expr Text)
forall a (fold :: Fold).
(Sql IsString a, Sql DBString a) =>
Expr a -> Aggregator' fold (Expr a) (Expr a)
stringAgg Expr Text
",")
name :: TypeName
name = TypeInformation (Unnullify a) -> TypeName
forall a. TypeInformation a -> TypeName
arrayTypeName TypeInformation (Unnullify a)
info
ifPP :: Opaleye.IfPP (Expr a) (Expr a)
ifPP :: forall a. IfPP (Expr a) (Expr a)
ifPP = (Expr a -> Field_ Any Any)
-> (Field_ Any Any -> Expr a)
-> IfPP (Field_ Any Any) (Field_ Any Any)
-> IfPP (Expr a) (Expr a)
forall a b c d. (a -> b) -> (c -> d) -> IfPP b c -> IfPP a d
forall (p :: * -> * -> *) a b c d.
Profunctor p =>
(a -> b) -> (c -> d) -> p b c -> p a d
dimap Expr a -> Field_ Any Any
forall {a} {n :: Nullability} {b}. Expr a -> Field_ n b
from Field_ Any Any -> Expr a
forall {n :: Nullability} {b} {a}. Field_ n b -> Expr a
to IfPP (Field_ Any Any) (Field_ Any Any)
forall (n :: Nullability) a. IfPP (Field_ n a) (Field_ n a)
Opaleye.ifPPField
where
from :: Expr a -> Field_ n b
from = PrimExpr -> Field_ n b
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ n b)
-> (Expr a -> PrimExpr) -> Expr a -> Field_ n b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Expr a -> PrimExpr
forall a. Expr a -> PrimExpr
toPrimExpr
to :: Field_ n b -> Expr a
to = PrimExpr -> Expr a
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr a)
-> (Field_ n b -> PrimExpr) -> Field_ n b -> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ n b -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn