-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Provides a quasi-quoter for raw SQL for persistent -- -- Please see README and API docs at -- http://www.stackage.org/package/persistent. @package persistent-qq @version 2.9.2.1 -- | Module: module Database.Persist.Sql.Raw.QQ Description: QuasiQuoters -- for performing raw sql queries -- -- This module exports convenient QuasiQuoters to perform raw SQL -- queries. All QuasiQuoters follow the same pattern and are analogous to -- the similar named functions exported from Raw. Neither the -- quoted function's behaviour, nor it's return value is altered during -- the translation and all documentation provided with it holds. -- -- The QuasiQuoters in this module perform a simple substitution on the -- query text, that allows value substitutions, table name substitutions -- as well as column name substitutions. module Database.Persist.Sql.Raw.QQ -- | Analoguous to rawQuery queryQQ :: QuasiQuoter -- | Analoguous to rawQueryRes queryResQQ :: QuasiQuoter -- | QuasiQuoter for performing raw sql queries, analoguous to -- rawSql -- -- This and the following are convenient QuasiQuoters to perform raw SQL -- queries. They each follow the same pattern and are analogous to the -- similarly named raw functions. Neither the quoted function's -- behaviour, nor it's return value is altered during the translation and -- all documentation provided with it holds. -- -- These QuasiQuoters perform a simple substitution on the query text, -- that allows value substitutions, table name substitutions as well as -- column name substitutions. -- -- Here is a small example: -- -- Given the following simple model: -- --
-- Category -- rgt Int default=0 -- lft Int default=0 -- nam Text ---- -- We can now execute this raw query: -- --
-- let lft = 10 :: Int
-- rgt = 20 :: Int
-- width = rgt - lft
-- nams = "first" :| ["second", "third"]
-- in [sqlQQ|
-- DELETE FROM ^{Category} WHERE @{CategoryLft} BETWEEN #{lft} AND #{rgt};
-- UPDATE category SET @{CategoryRgt} = @{CategoryRgt} - #{width} WHERE @{CategoryRgt} > #{rgt};
-- UPDATE category SET @{CategoryLft} = @{CategoryLft} - #{width} WHERE @{CategoryLft} > #{rgt};
-- SELECT ?? FROM ^{Category} WHERE ^{Category}.@{CategoryNam} IN %{nams};
-- INSERT INTO ^{Category}(@{CategoryNam}) VALUES *{Single <$> nams};
-- |]
--
--
--