orville-postgresql-1.1.0.0: src/Orville/PostgreSQL/Expr/Internal/Name/FunctionName.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{- |
Copyright : Flipstone Technology Partners 2023
License : MIT
Stability : Stable
@since 1.0.0.0
-}
module Orville.PostgreSQL.Expr.Internal.Name.FunctionName
( FunctionName
, functionName
, arrayAggFunctionName
, avgFunctionName
, bitAndFunctionName
, bitOrFunctionName
, bitXorFunctionName
, boolAndFunctionName
, boolOrFunctionName
, countFunctionName
, everyFunctionName
, jsonAggFunctionName
, jsonObjectAggFunctionName
, jsonbAggFunctionName
, jsonbObjectAggFunctionName
, maxFunctionName
, minFunctionName
, stringAggFunctionName
, sumFunctionName
, corFunctionName
, covarPopFunctionName
, covarSampFunctionName
, stddevPopFunctionName
, stddevSampFunctionName
, varPopFunctionName
, varSampFunctionName
)
where
import Orville.PostgreSQL.Expr.Internal.Name.Identifier (Identifier, IdentifierExpression, identifier)
import qualified Orville.PostgreSQL.Raw.RawSql as RawSql
{- | Type to represent a SQL function name. 'FunctionName' values constructed
via the 'functionName' function will be properly escaped as part of the
generated SQL. E.G.
> "some_function_name"
'FunctionName' provides a 'RawSql.SqlExpression' instance. See
'RawSql.unsafeSqlExpression' for how to construct a value with your own custom
SQL.
@since 1.0.0.0
-}
newtype FunctionName
= FunctionName Identifier
deriving
( -- | @since 1.0.0.0
RawSql.SqlExpression
, -- | @since 1.0.0.0
IdentifierExpression
)
{- | Construct a 'FunctionName' from a 'String' with proper escaping as part of the generated SQL.
@since 1.0.0.0
-}
functionName :: String -> FunctionName
functionName =
FunctionName . identifier
{- | The @array_agg@ window function name
@since 1.1.0.0
-}
arrayAggFunctionName :: FunctionName
arrayAggFunctionName = functionName "array_agg"
{- | The @avg@ window function name
@since 1.1.0.0
-}
avgFunctionName :: FunctionName
avgFunctionName = functionName "avg"
{- | The @bit_and@ window function name
@since 1.1.0.0
-}
bitAndFunctionName :: FunctionName
bitAndFunctionName = functionName "bit_and"
{- | The @bit_or@ window function name
@since 1.1.0.0
-}
bitOrFunctionName :: FunctionName
bitOrFunctionName = functionName "bit_or"
{- | The @bit_xor@ window function name
@since 1.1.0.0
-}
bitXorFunctionName :: FunctionName
bitXorFunctionName = functionName "bit_xor"
{- | The @bool_and@ window function name
@since 1.1.0.0
-}
boolAndFunctionName :: FunctionName
boolAndFunctionName = functionName "bool_and"
{- | The @bool_or@ window function name
@since 1.1.0.0
-}
boolOrFunctionName :: FunctionName
boolOrFunctionName = functionName "bool_or"
{- | The @count@ window function name
@since 1.1.0.0
-}
countFunctionName :: FunctionName
countFunctionName = functionName "count"
{- | The @every@ window function name
@since 1.1.0.0
-}
everyFunctionName :: FunctionName
everyFunctionName = functionName "every"
{- | The @json_agg@ window function name
@since 1.1.0.0
-}
jsonAggFunctionName :: FunctionName
jsonAggFunctionName = functionName "json_agg"
{- | The @json_object_agg@ window function name
@since 1.1.0.0
-}
jsonObjectAggFunctionName :: FunctionName
jsonObjectAggFunctionName = functionName "json_object_agg"
{- | The @jsonb_agg@ window function name
@since 1.1.0.0
-}
jsonbAggFunctionName :: FunctionName
jsonbAggFunctionName = functionName "jsonb_agg"
{- | The @jsonb_object_agg@ window function name
@since 1.1.0.0
-}
jsonbObjectAggFunctionName :: FunctionName
jsonbObjectAggFunctionName = functionName "jsonb_object_agg"
{- | The @max@ window function name
@since 1.1.0.0
-}
maxFunctionName :: FunctionName
maxFunctionName = functionName "max"
{- | The @min@ window function name
@since 1.1.0.0
-}
minFunctionName :: FunctionName
minFunctionName = functionName "min"
{- | The @string_agg@ window function name
@since 1.1.0.0
-}
stringAggFunctionName :: FunctionName
stringAggFunctionName = functionName "string_agg"
{- | The @sum@ window function name
@since 1.1.0.0
-}
sumFunctionName :: FunctionName
sumFunctionName = functionName "sum"
{- | The @cor@ window function name
@since 1.1.0.0
-}
corFunctionName :: FunctionName
corFunctionName = functionName "cor"
{- | The @covar_pop@ window function name
@since 1.1.0.0
-}
covarPopFunctionName :: FunctionName
covarPopFunctionName = functionName "covar_pop"
{- | The @covar_samp@ window function name
@since 1.1.0.0
-}
covarSampFunctionName :: FunctionName
covarSampFunctionName = functionName "covar_samp"
{- | The @stddev_pop@ window function name
@since 1.1.0.0
-}
stddevPopFunctionName :: FunctionName
stddevPopFunctionName = functionName "stddev_pop"
{- | The @stddev_samp@ window function name
@since 1.1.0.0
-}
stddevSampFunctionName :: FunctionName
stddevSampFunctionName = functionName "stddev_samp"
{- | The @var_pop@ window function name
@since 1.1.0.0
-}
varPopFunctionName :: FunctionName
varPopFunctionName = functionName "var_pop"
{- | The @var_samp@ window function name
@since 1.1.0.0
-}
varSampFunctionName :: FunctionName
varSampFunctionName = functionName "var_samp"