55 lines
1.4 KiB
Haskell
55 lines
1.4 KiB
Haskell
{-# LANGUAGE OverloadedStrings
|
|
#-}
|
|
-- | This module contain PostgreSQL-specific functions.
|
|
--
|
|
-- /Since: 2.2.8/
|
|
module Database.Esqueleto.PostgreSQL
|
|
( arrayAggDistinct
|
|
, arrayAgg
|
|
, stringAgg
|
|
, chr
|
|
, now_
|
|
) where
|
|
|
|
import Database.Esqueleto.Internal.Language
|
|
import Database.Esqueleto.Internal.Sql
|
|
import Data.Time.Clock (UTCTime)
|
|
|
|
-- | (@array_agg@) Concatenate distinct input values, including @NULL@s, into
|
|
-- an array.
|
|
--
|
|
-- /Since: 2.5.3/
|
|
arrayAggDistinct :: SqlExpr (Value a) -> SqlExpr (Value [a])
|
|
arrayAggDistinct = arrayAgg . distinct
|
|
where
|
|
distinct = unsafeSqlBinOp " " (unsafeSqlValue "DISTINCT")
|
|
|
|
-- | (@array_agg@) Concatenate input values, including @NULL@s,
|
|
-- into an array.
|
|
--
|
|
-- /Since: 2.2.8/
|
|
arrayAgg :: SqlExpr (Value a) -> SqlExpr (Value [a])
|
|
arrayAgg = unsafeSqlFunction "array_agg"
|
|
|
|
-- | (@string_agg@) Concatenate input values separated by a
|
|
-- delimiter.
|
|
--
|
|
-- /Since: 2.2.8/
|
|
stringAgg
|
|
:: SqlString s
|
|
=> SqlExpr (Value s) -- ^ Input values.
|
|
-> SqlExpr (Value s) -- ^ Delimiter.
|
|
-> SqlExpr (Value s) -- ^ Concatenation.
|
|
stringAgg expr delim = unsafeSqlFunction "string_agg" (expr, delim)
|
|
|
|
|
|
-- | (@chr@) Translate the given integer to a character. (Note the result will
|
|
-- depend on the character set of your database.)
|
|
--
|
|
-- /Since: 2.2.11/
|
|
chr :: SqlString s => SqlExpr (Value Int) -> SqlExpr (Value s)
|
|
chr = unsafeSqlFunction "chr"
|
|
|
|
now_ :: SqlExpr (Value UTCTime)
|
|
now_ = unsafeSqlValue "NOW()"
|