-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | SQL keywords data constructors into OverloadedString
--   
--   This package contains SQL keywords constructors defined as
--   OverloadedString literals and helper functions to concate these.
@package sql-words
@version 0.1.6.5


-- | Concatenations on <a>Keyword</a> types
module Language.SQL.Keyword.Concat

-- | Concatenate <a>Keyword</a> list like unwords on <a>String</a> list.
unwords' :: [Keyword] -> Keyword

-- | Separate <a>Keyword</a> list with delimiter <a>Keyword</a> and
--   concatenate into one <a>Keyword</a>.
sepBy :: [Keyword] -> Keyword -> Keyword

-- | Do <a>sepBy</a> and enclose by paren
parenSepBy :: [Keyword] -> Keyword -> Keyword

-- | Define binary operator on <a>Keyword</a> type. Result is delimited by
--   whitespace like unwords on <a>String</a> list.
defineBinOp :: Keyword -> Keyword -> Keyword -> Keyword

-- | Define binary operator of string from <a>Keyword</a> binary operator.
strBinOp :: (Keyword -> Keyword -> Keyword) -> String -> String -> String

-- | Binary operator for SQL name alias.
as :: Keyword -> Keyword -> Keyword

-- | Binary operator to create qualified name on SQL.
(<.>) :: Keyword -> Keyword -> Keyword

-- | Binary operator to create comma separated words.
(|*|) :: Keyword -> Keyword -> Keyword
infixr 1 |*|

-- | Binary operator for SQL string expression concatenation.
(.||.) :: Keyword -> Keyword -> Keyword
infixr 5 .||.

-- | Binary eq operator for SQL expression.
(.=.) :: Keyword -> Keyword -> Keyword
infixr 4 .=.

-- | Binary lt operator for SQL expression.
(.<.) :: Keyword -> Keyword -> Keyword
infixr 4 .<.

-- | Binary le operator for SQL expression.
(.<=.) :: Keyword -> Keyword -> Keyword
infixr 4 .<=.

-- | Binary gt operator for SQL expression.
(.>.) :: Keyword -> Keyword -> Keyword
infixr 4 .>.

-- | Binary ge operator for SQL expression.
(.>=.) :: Keyword -> Keyword -> Keyword
infixr 4 .>=.

-- | Binary not eq operator for SQL expression.
(.<>.) :: Keyword -> Keyword -> Keyword
infixr 4 .<>.

-- | Binary <a>AND</a> operator for SQL boolean expression.
and :: Keyword -> Keyword -> Keyword
infixr 3 `and`

-- | Binary <a>OR</a> operator for SQL boolean expression.
or :: Keyword -> Keyword -> Keyword
infixr 2 `or`

-- | Binary <a>IN</a> operator for SQL.
in' :: Keyword -> Keyword -> Keyword
infix 4 `in'`

-- | Directly concatenate SQL string without whitespaces.
(<++>) :: Keyword -> Keyword -> Keyword
infixr 6 <++>

-- | Fold operation using binary operator with empty result of zero length
--   case.
fold :: (Keyword -> Keyword -> Keyword) -> [Keyword] -> Keyword

-- | Define unary operator on <a>Keyword</a> type represented by specified
--   <a>Keyword</a>. Result is delimited by whitespace like unwords on
--   <a>String</a> list.
defineUniOp :: Keyword -> Keyword -> Keyword

-- | Uni operator to create Parend words.
paren :: Keyword -> Keyword

-- | Define uni operator of string from <a>Keyword</a> uni operator.
strUniOp :: (Keyword -> Keyword) -> String -> String


-- | SQL keyword representation using Haskell data constructors.
module Language.SQL.Keyword.Type

-- | Type represent SQL keywords.
data Keyword
SELECT :: Keyword
ALL :: Keyword
DISTINCT :: Keyword
ON :: Keyword
GROUP :: Keyword
COUNT :: Keyword
SUM :: Keyword
AVG :: Keyword
MAX :: Keyword
MIN :: Keyword
EVERY :: Keyword
ANY :: Keyword
SOME :: Keyword
CUBE :: Keyword
ROLLUP :: Keyword
GROUPING :: Keyword
SETS :: Keyword
HAVING :: Keyword
FOR :: Keyword
ORDER :: Keyword
BY :: Keyword
ASC :: Keyword
DESC :: Keyword
NULLS :: Keyword
LAST :: Keyword
OFFSET :: Keyword
LIMIT :: Keyword
FETCH :: Keyword
FIRST :: Keyword
NEXT :: Keyword
PERCENT :: Keyword
ROW :: Keyword
ROWS :: Keyword
ONLY :: Keyword
TIES :: Keyword
UNION :: Keyword
EXCEPT :: Keyword
INTERSECT :: Keyword
DELETE :: Keyword
USING :: Keyword
RETURNING :: Keyword
FROM :: Keyword
AS :: Keyword
WITH :: Keyword
JOIN :: Keyword
INNER :: Keyword
LEFT :: Keyword
RIGHT :: Keyword
FULL :: Keyword
NATURAL :: Keyword
OUTER :: Keyword
UPDATE :: Keyword
SET :: Keyword
DEFAULT :: Keyword
WHERE :: Keyword
INSERT :: Keyword
INTO :: Keyword
VALUES :: Keyword
MERGE :: Keyword
OVER :: Keyword
PARTITION :: Keyword
DENSE_RANK :: Keyword
RANK :: Keyword
ROW_NUMBER :: Keyword
PERCENT_RANK :: Keyword
CUME_DIST :: Keyword
LAG :: Keyword
LEAD :: Keyword
FIRST_VALUE :: Keyword
LAST_VALUE :: Keyword
CASE :: Keyword
END :: Keyword
WHEN :: Keyword
ELSE :: Keyword
THEN :: Keyword
LIKE :: Keyword
SIMILAR :: Keyword
AND :: Keyword
OR :: Keyword
NOT :: Keyword
EXISTS :: Keyword
IS :: Keyword
NULL :: Keyword
IN :: Keyword
DATE :: Keyword
TIME :: Keyword
TIMESTAMP :: Keyword
TIMESTAMPTZ :: Keyword
INTERVAL :: Keyword
Sequence :: !DString -> Keyword

-- | Diff String type for low-cost concatenation.
data DString

-- | Make <a>Keyword</a> from String
word :: String -> Keyword

-- | Show <a>Keyword</a>
wordShow :: Keyword -> String

-- | Concatenate keywords into <a>String</a> like unwords
unwordsSQL :: [Keyword] -> String


-- | SQL keyword representation using Haskell data constructors. Integrated
--   module.
module Language.SQL.Keyword
