{-# language DataKinds #-}
{-# language DisambiguateRecordFields #-}
{-# language FlexibleContexts #-}
{-# language NamedFieldPuns #-}
{-# language OverloadedStrings #-}
{-# language ScopedTypeVariables #-}
{-# language TypeApplications #-}
{-# language TypeFamilies #-}
{-# options_ghc -fno-warn-redundant-constraints #-}
module Rel8.Internal.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.Internal.Aggregate
( Aggregator' (Aggregator)
, Aggregator1
, filterWhereExplicit
, unsafeMakeAggregator
)
import Rel8.Internal.Aggregate.Fold (Fallback (Empty, Fallback))
import Rel8.Internal.Expr ( Expr )
import Rel8.Internal.Expr.Array (sempty)
import Rel8.Internal.Expr.Bool (false, true)
import Rel8.Internal.Expr.Eq ((/=.))
import Rel8.Internal.Expr.Opaleye
( castExpr
, fromColumn
, fromPrimExpr
, toColumn
, toPrimExpr
, unsafeCastExpr
)
import Rel8.Internal.Expr.Order (asc)
import Rel8.Internal.Expr.Read (sread)
import Rel8.Internal.Expr.Show (show)
import qualified Rel8.Internal.Expr.Text as Text
import Rel8.Internal.Order (Order (Order))
import Rel8.Internal.Schema.Null ( Sql, Unnullify )
import Rel8.Internal.Table.Opaleye (fromOrder, unpackspec)
import Rel8.Internal.Table.Order (ascTable)
import Rel8.Internal.Type ( DBType, typeInformation )
import Rel8.Internal.Type.Array (arrayTypeName, quoteArrayElement)
import Rel8.Internal.Type.Eq ( DBEq )
import Rel8.Internal.Type.Information (TypeInformation)
import Rel8.Internal.Type.Num (DBFractional, DBNum)
import Rel8.Internal.Type.Ord (DBMax, DBMin, DBOrd)
import Rel8.Internal.Type.String ( DBString )
import Rel8.Internal.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 (ZonkAny 24))
-> (Field_ 'NonNullable SqlInt8 -> Expr Int64)
-> Fallback fold (Expr Int64)
-> Aggregator
(Field_ 'NonNullable (ZonkAny 24)) (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 (ZonkAny 24)
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable (ZonkAny 24))
-> (Expr a -> PrimExpr)
-> Expr a
-> Field_ 'NonNullable (ZonkAny 24)
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 (ZonkAny 24)) (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 (ZonkAny 23))
-> (Field_ 'NonNullable (ZonkAny 23) -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator
(Field_ 'NonNullable (ZonkAny 23))
(Field_ 'NonNullable (ZonkAny 23))
-> 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 (ZonkAny 23)
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable (ZonkAny 23))
-> (Expr a -> PrimExpr)
-> Expr a
-> Field_ 'NonNullable (ZonkAny 23)
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 (ZonkAny 23) -> PrimExpr)
-> Field_ 'NonNullable (ZonkAny 23)
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable (ZonkAny 23) -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr a)
forall a. Fallback 'Semi a
Empty
Aggregator
(Field_ 'NonNullable (ZonkAny 23))
(Field_ 'NonNullable (ZonkAny 23))
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 (ZonkAny 22))
-> (Field_ 'NonNullable (ZonkAny 22) -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator
(Field_ 'NonNullable (ZonkAny 22))
(Field_ 'NonNullable (ZonkAny 22))
-> 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 (ZonkAny 22)
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable (ZonkAny 22))
-> (Expr a -> PrimExpr)
-> Expr a
-> Field_ 'NonNullable (ZonkAny 22)
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 (ZonkAny 22) -> PrimExpr)
-> Field_ 'NonNullable (ZonkAny 22)
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable (ZonkAny 22) -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr a)
forall a. Fallback 'Semi a
Empty
Aggregator
(Field_ 'NonNullable (ZonkAny 22))
(Field_ 'NonNullable (ZonkAny 22))
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 (ZonkAny 21))
-> (Field_ 'NonNullable (ZonkAny 21) -> Expr a)
-> Fallback fold (Expr a)
-> Aggregator
(Field_ 'NonNullable (ZonkAny 21))
(Field_ 'NonNullable (ZonkAny 21))
-> 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 (ZonkAny 21)
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable (ZonkAny 21))
-> (Expr a -> PrimExpr)
-> Expr a
-> Field_ 'NonNullable (ZonkAny 21)
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 (ZonkAny 21) -> PrimExpr)
-> Field_ 'NonNullable (ZonkAny 21)
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable (ZonkAny 21) -> 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 (ZonkAny 21))
(Field_ 'NonNullable (ZonkAny 21))
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 (ZonkAny 20))
-> (Field_ 'NonNullable (ZonkAny 20) -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator
(Field_ 'NonNullable (ZonkAny 20))
(Field_ 'NonNullable (ZonkAny 20))
-> 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 (ZonkAny 20)
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable (ZonkAny 20))
-> (Expr a -> PrimExpr)
-> Expr a
-> Field_ 'NonNullable (ZonkAny 20)
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 (ZonkAny 20) -> PrimExpr)
-> Field_ 'NonNullable (ZonkAny 20)
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable (ZonkAny 20) -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr a)
forall a. Fallback 'Semi a
Empty
Aggregator
(Field_ 'NonNullable (ZonkAny 20))
(Field_ 'NonNullable (ZonkAny 20))
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_ (ZonkAny 18) (ZonkAny 19) -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator (Expr a) (Field_ (ZonkAny 18) (ZonkAny 19))
-> 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_ (ZonkAny 18) (ZonkAny 19) -> PrimExpr)
-> Field_ (ZonkAny 18) (ZonkAny 19)
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ (ZonkAny 18) (ZonkAny 19) -> 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_ (ZonkAny 18) (ZonkAny 19))
-> Aggregator (Expr a) (Field_ (ZonkAny 18) (ZonkAny 19))
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_ (ZonkAny 18) (ZonkAny 19))
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_ (ZonkAny 16) (ZonkAny 17) -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator
(Expr Double, Expr a) (Field_ (ZonkAny 16) (ZonkAny 17))
-> 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_ (ZonkAny 16) (ZonkAny 17) -> Expr a)
-> Field_ (ZonkAny 16) (ZonkAny 17)
-> 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_ (ZonkAny 16) (ZonkAny 17) -> PrimExpr)
-> Field_ (ZonkAny 16) (ZonkAny 17)
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ (ZonkAny 16) (ZonkAny 17) -> 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_ (ZonkAny 16) (ZonkAny 17))
-> Aggregator
(Expr Double, Expr a) (Field_ (ZonkAny 16) (ZonkAny 17))
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_ (ZonkAny 16) (ZonkAny 17))
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_ (ZonkAny 14) (ZonkAny 15) -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator
(Expr Double, Expr a) (Field_ (ZonkAny 14) (ZonkAny 15))
-> 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_ (ZonkAny 14) (ZonkAny 15) -> Expr a)
-> Field_ (ZonkAny 14) (ZonkAny 15)
-> 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_ (ZonkAny 14) (ZonkAny 15) -> PrimExpr)
-> Field_ (ZonkAny 14) (ZonkAny 15)
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ (ZonkAny 14) (ZonkAny 15) -> 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_ (ZonkAny 14) (ZonkAny 15))
-> Aggregator
(Expr Double, Expr a) (Field_ (ZonkAny 14) (ZonkAny 15))
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_ (ZonkAny 14) (ZonkAny 15))
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_ (ZonkAny 12) (ZonkAny 13) -> Expr Int64)
-> Fallback fold (Expr Int64)
-> Aggregator (a, a) (Field_ (ZonkAny 12) (ZonkAny 13))
-> 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_ (ZonkAny 12) (ZonkAny 13) -> Expr Int64)
-> Field_ (ZonkAny 12) (ZonkAny 13)
-> 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_ (ZonkAny 12) (ZonkAny 13) -> PrimExpr)
-> Field_ (ZonkAny 12) (ZonkAny 13)
-> Expr Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ (ZonkAny 12) (ZonkAny 13) -> 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_ (ZonkAny 12) (ZonkAny 13))
-> Aggregator (a, a) (Field_ (ZonkAny 12) (ZonkAny 13))
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_ (ZonkAny 12) (ZonkAny 13))
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_ (ZonkAny 10) (ZonkAny 11) -> Expr Int64)
-> Fallback fold (Expr Int64)
-> Aggregator a (Field_ (ZonkAny 10) (ZonkAny 11))
-> 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_ (ZonkAny 10) (ZonkAny 11) -> Expr Int64)
-> Field_ (ZonkAny 10) (ZonkAny 11)
-> 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_ (ZonkAny 10) (ZonkAny 11) -> PrimExpr)
-> Field_ (ZonkAny 10) (ZonkAny 11)
-> Expr Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ (ZonkAny 10) (ZonkAny 11) -> 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_ (ZonkAny 10) (ZonkAny 11))
-> Aggregator a (Field_ (ZonkAny 10) (ZonkAny 11))
forall a b. Order a -> Aggregator a b -> Aggregator a b
Opaleye.withinGroup Order a
order
(Unpackspec a a
-> AggrOp -> Aggregator a (Field_ (ZonkAny 10) (ZonkAny 11))
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_ (ZonkAny 8) (ZonkAny 9) -> Expr Double)
-> Fallback fold (Expr Double)
-> Aggregator a (Field_ (ZonkAny 8) (ZonkAny 9))
-> 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_ (ZonkAny 8) (ZonkAny 9) -> Expr Double)
-> Field_ (ZonkAny 8) (ZonkAny 9)
-> 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_ (ZonkAny 8) (ZonkAny 9) -> PrimExpr)
-> Field_ (ZonkAny 8) (ZonkAny 9)
-> Expr Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ (ZonkAny 8) (ZonkAny 9) -> 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_ (ZonkAny 8) (ZonkAny 9))
-> Aggregator a (Field_ (ZonkAny 8) (ZonkAny 9))
forall a b. Order a -> Aggregator a b -> Aggregator a b
Opaleye.withinGroup Order a
order
(Unpackspec a a
-> AggrOp -> Aggregator a (Field_ (ZonkAny 8) (ZonkAny 9))
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_ (ZonkAny 6) (ZonkAny 7) -> Expr Double)
-> Fallback fold (Expr Double)
-> Aggregator a (Field_ (ZonkAny 6) (ZonkAny 7))
-> 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_ (ZonkAny 6) (ZonkAny 7) -> Expr Double)
-> Field_ (ZonkAny 6) (ZonkAny 7)
-> 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_ (ZonkAny 6) (ZonkAny 7) -> PrimExpr)
-> Field_ (ZonkAny 6) (ZonkAny 7)
-> Expr Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ (ZonkAny 6) (ZonkAny 7) -> 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_ (ZonkAny 6) (ZonkAny 7))
-> Aggregator a (Field_ (ZonkAny 6) (ZonkAny 7))
forall a b. Order a -> Aggregator a b -> Aggregator a b
Opaleye.withinGroup Order a
order
(Unpackspec a a
-> AggrOp -> Aggregator a (Field_ (ZonkAny 6) (ZonkAny 7))
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_ (ZonkAny 4) (ZonkAny 5))
-> (Field_ (ZonkAny 4) (ZonkAny 5) -> Expr a)
-> Fallback 'Semi (Expr a)
-> Aggregator
(Field_ (ZonkAny 4) (ZonkAny 5)) (Field_ (ZonkAny 4) (ZonkAny 5))
-> 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_ (ZonkAny 4) (ZonkAny 5)
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ (ZonkAny 4) (ZonkAny 5))
-> (Expr a -> PrimExpr) -> Expr a -> Field_ (ZonkAny 4) (ZonkAny 5)
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_ (ZonkAny 4) (ZonkAny 5) -> PrimExpr)
-> Field_ (ZonkAny 4) (ZonkAny 5)
-> Expr a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ (ZonkAny 4) (ZonkAny 5) -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr a)
forall a. Fallback 'Semi a
Empty
Aggregator
(Field_ (ZonkAny 4) (ZonkAny 5)) (Field_ (ZonkAny 4) (ZonkAny 5))
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 (ZonkAny 3))
-> (Field_ 'NonNullable (SqlArray (ZonkAny 3)) -> Expr [a])
-> Fallback fold (Expr [a])
-> Aggregator
(Field_ 'NonNullable (ZonkAny 3))
(Field_ 'NonNullable (SqlArray (ZonkAny 3)))
-> 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 (ZonkAny 3)
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable (ZonkAny 3))
-> (Expr a -> PrimExpr)
-> Expr a
-> Field_ 'NonNullable (ZonkAny 3)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeInformation (Unnullify a) -> PrimExpr -> PrimExpr
forall a. TypeInformation a -> PrimExpr -> PrimExpr
quoteArrayElement 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 (ZonkAny 3)) -> PrimExpr)
-> Field_ 'NonNullable (SqlArray (ZonkAny 3))
-> Expr [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable (SqlArray (ZonkAny 3)) -> 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 (ZonkAny 3))
(Field_ 'NonNullable (SqlArray (ZonkAny 3)))
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 (ZonkAny 2))
-> (Field_ 'NonNullable (SqlArray (ZonkAny 2))
-> Expr (NonEmpty a))
-> Fallback 'Semi (Expr (NonEmpty a))
-> Aggregator
(Field_ 'NonNullable (ZonkAny 2))
(Field_ 'NonNullable (SqlArray (ZonkAny 2)))
-> 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 (ZonkAny 2)
forall (n :: Nullability) b. PrimExpr -> Field_ n b
toColumn (PrimExpr -> Field_ 'NonNullable (ZonkAny 2))
-> (Expr a -> PrimExpr)
-> Expr a
-> Field_ 'NonNullable (ZonkAny 2)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypeInformation (Unnullify a) -> PrimExpr -> PrimExpr
forall a. TypeInformation a -> PrimExpr -> PrimExpr
quoteArrayElement 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 (ZonkAny 2)) -> PrimExpr)
-> Field_ 'NonNullable (SqlArray (ZonkAny 2))
-> Expr (NonEmpty a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Field_ 'NonNullable (SqlArray (ZonkAny 2)) -> PrimExpr
forall (n :: Nullability) b. Field_ n b -> PrimExpr
fromColumn)
Fallback 'Semi (Expr (NonEmpty a))
forall a. Fallback 'Semi a
Empty
Aggregator
(Field_ 'NonNullable (ZonkAny 2))
(Field_ 'NonNullable (SqlArray (ZonkAny 2)))
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_ (ZonkAny 0) (ZonkAny 1))
-> (Field_ (ZonkAny 0) (ZonkAny 1) -> Expr a)
-> IfPP
(Field_ (ZonkAny 0) (ZonkAny 1)) (Field_ (ZonkAny 0) (ZonkAny 1))
-> 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_ (ZonkAny 0) (ZonkAny 1)
forall {a} {n :: Nullability} {b}. Expr a -> Field_ n b
from Field_ (ZonkAny 0) (ZonkAny 1) -> Expr a
forall {n :: Nullability} {b} {a}. Field_ n b -> Expr a
to IfPP
(Field_ (ZonkAny 0) (ZonkAny 1)) (Field_ (ZonkAny 0) (ZonkAny 1))
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