on dev help sign in
functions
commit4a99bc9f3ee9d37703c89a839f883e71f94691d3 authorEitan Chatav <eitan@Eitans-MacBook-Pro.local> dateTue 12 Mar 2019, 15:34 (8 years ago) parent1cb61cc
1 file changed+68−2
squeal-postgresql/src/Squeal/PostgreSQL/Expression.hs+68−2
squeal-postgresql/src/Squeal/PostgreSQL/Expression.hs+68−2
@@ -58,6 +58,7 @@ module Squeal.PostgreSQL.Expression
5858 , unsafeBinaryOp
5959 , unsafeUnaryOp
6060 , unsafeFunction
61+ , unsafeFunction2
6162 , unsafeVariadicFunction
6263 , atan2_
6364 , cast
@@ -222,6 +223,11 @@ module Squeal.PostgreSQL.Expression
222223 , fixarray
223224 , tsvector
224225 , tsquery
226+ , arrayToTSvector
227+ , tsvectorLength
228+ , numnode
229+ , plainToTSquery
230+ , phraseToTSquery
225231 -- * Re-export
226232 , (&)
227233 , NP (..)
@@ -646,11 +652,20 @@ unsafeUnaryOp op x = UnsafeExpression $ parenthesized $
646652unsafeFunction
647653 :: ByteString
648654 -- ^ function
649− -> Expression outer grp commons schemas params from (xty)
650− -> Expression outer grp commons schemas params from (yty)
655+ -> Expression outer grp commons schemas params from xty
656+ -> Expression outer grp commons schemas params from yty
651657unsafeFunction fun x = UnsafeExpression $
652658 fun <> parenthesized (renderSQL x)
653659
660+unsafeFunction2
661+ :: ByteString
662+ -- ^ function
663+ -> Expression outer grp commons schemas params from ty1
664+ -> Expression outer grp commons schemas params from ty2
665+ -> Expression outer grp commons schemas params from ty
666+unsafeFunction2 fun x1 x2 = UnsafeExpression $
667+ fun <> parenthesized (commaSeparated [renderSQL x1, renderSQL x2])
668+
654669-- | Helper for defining variadic functions.
655670unsafeVariadicFunction
656671 :: SListI elems
@@ -1625,6 +1640,57 @@ jsonbPretty = unsafeFunction "jsonb_pretty"
16251640(<->) :: Operator (nullity 'PGtsquery) (nullity 'PGtsquery) (nullity 'PGtsquery)
16261641(<->) = unsafeBinaryOp "<->"
16271642
1643+arrayToTSvector
1644+ :: Expression outer grp commons schemas params from (nullity ('PGvararray ('NotNull 'PGtext)))
1645+ -> Expression outer grp commons schemas params from (nullity 'PGtsvector)
1646+arrayToTSvector = unsafeFunction "array_to_tsvector"
1647+
1648+tsvectorLength
1649+ :: Expression outer grp commons schemas params from (nullity 'PGtsvector)
1650+ -> Expression outer grp commons schemas params from (nullity 'PGint4)
1651+tsvectorLength = unsafeFunction "length"
1652+
1653+numnode
1654+ :: Expression outer grp commons schemas params from (nullity 'PGtsquery)
1655+ -> Expression outer grp commons schemas params from (nullity 'PGint4)
1656+numnode = unsafeFunction "numnode"
1657+
1658+plainToTSquery
1659+ :: Expression outer grp commons schemas params from (nullity 'PGtext)
1660+ -> Expression outer grp commons schemas params from (nullity 'PGtext)
1661+ -> Expression outer grp commons schemas params from (nullity 'PGtsquery)
1662+plainToTSquery = unsafeFunction2 "plainto_tsquery"
1663+
1664+phraseToTSquery
1665+ :: Expression outer grp commons schemas params from (nullity 'PGtext)
1666+ -> Expression outer grp commons schemas params from (nullity 'PGtext)
1667+ -> Expression outer grp commons schemas params from (nullity 'PGtsquery)
1668+phraseToTSquery = unsafeFunction2 "phraseto_tsquery"
1669+
1670+websearchToTSquery
1671+ :: Expression outer grp commons schemas params from (nullity 'PGtext)
1672+ -> Expression outer grp commons schemas params from (nullity 'PGtext)
1673+ -> Expression outer grp commons schemas params from (nullity 'PGtsquery)
1674+websearchToTSquery = unsafeFunction2 "websearch_to_tsquery"
1675+
1676+queryTree
1677+ :: Expression outer grp commons schemas params from (nullity 'PGtsquery)
1678+ -> Expression outer grp commons schemas params from (nullity 'PGtext)
1679+queryTree = unsafeFunction "query_tree"
1680+
1681+toTSquery
1682+ :: Expression outer grp commons schemas params from (nullity 'PGtext)
1683+ -> Expression outer grp commons schemas params from (nullity 'PGtext)
1684+ -> Expression outer grp commons schemas params from (nullity 'PGtsquery)
1685+toTSquery = unsafeFunction2 "to_tsquery"
1686+
1687+toTSvector
1688+ :: ty `In` '[ 'PGtext, 'PGjson, 'PGjsonb]
1689+ => Expression outer grp commons schemas params from (nullity 'PGtext)
1690+ -> Expression outer grp commons schemas params from (nullity ty)
1691+ -> Expression outer grp commons schemas params from (nullity 'PGtsquery)
1692+toTSvector = unsafeFunction2 "to_tsvector"
1693+
16281694{-----------------------------------------
16291695aggregation
16301696-----------------------------------------}