Safe Haskell | None |
---|---|
Language | Haskell98 |
This module defines the functions which are used only for backends creation.
- renderCond :: SqlDb db => RenderConfig -> Cond db r -> Maybe (RenderS db r)
- defaultShowPrim :: PersistValue -> String
- renderOrders :: SqlDb db => RenderConfig -> [Order db r] -> RenderS db r
- renderUpdates :: SqlDb db => RenderConfig -> [Update db r] -> Maybe (RenderS db r)
- renderFields :: StringLike s => (s -> s) -> [(String, DbType)] -> s
- renderChain :: RenderConfig -> FieldChain -> [Utf8] -> [Utf8]
- renderExpr :: SqlDb db => RenderConfig -> UntypedExpr db r -> RenderS db r
- renderExprPriority :: SqlDb db => RenderConfig -> Int -> UntypedExpr db r -> RenderS db r
- renderExprExtended :: SqlDb db => RenderConfig -> Int -> UntypedExpr db r -> [RenderS db r]
- renderPersistValue :: PersistValue -> RenderS db r
- mkExprWithConf :: (SqlDb db, PersistField a) => (RenderConfig -> Int -> Expr db r a) -> Expr db r a
- prerenderExpr :: SqlDb db => RenderConfig -> Expr db r a -> Expr db r a
- intercalateS :: StringLike s => s -> [s] -> s
- commasJoin :: StringLike s => [s] -> s
- flatten :: StringLike s => (s -> s) -> (String, DbType) -> [s] -> [s]
- data RenderS db r = RenderS {
- getQuery :: Utf8
- getValues :: [PersistValue] -> [PersistValue]
- newtype Utf8 = Utf8 Builder
- newtype RenderConfig = RenderConfig {}
- fromUtf8 :: Utf8 -> ByteString
- class (Monoid a, IsString a) => StringLike a where
- fromString :: IsString a => String -> a
- (<>) :: Monoid m => m -> m -> m
- function :: SqlDb db => String -> [UntypedExpr db r] -> Snippet db r
- operator :: (SqlDb db, Expression db r a, Expression db r b) => Int -> String -> a -> b -> Snippet db r
- parens :: Int -> Int -> RenderS db r -> RenderS db r
- mkExpr :: SqlDb db => Snippet db r -> Expr db r a
- newtype Snippet db r = Snippet (RenderConfig -> Int -> [RenderS db r])
- class (DbDescriptor db, QueryRaw db ~ Snippet db) => SqlDb db where
- append :: (ExpressionOf db r a String, ExpressionOf db r b String) => a -> b -> Expr db r String
- signum' :: (ExpressionOf db r x a, Num a) => x -> Expr db r a
- quotRem' :: (ExpressionOf db r x a, ExpressionOf db r y a, Integral a) => x -> y -> (Expr db r a, Expr db r a)
- equalsOperator :: RenderS db r -> RenderS db r -> RenderS db r
- notEqualsOperator :: RenderS db r -> RenderS db r -> RenderS db r
- class SqlDb db => FloatingSqlDb db where
- log' :: (ExpressionOf db r x a, Floating a) => x -> Expr db r a
- logBase' :: (ExpressionOf db r b a, ExpressionOf db r x a, Floating a) => b -> x -> Expr db r a
- tableName :: StringLike s => (s -> s) -> EntityDef -> ConstructorDef -> s
- mainTableName :: StringLike s => (s -> s) -> EntityDef -> s
SQL rendering utilities
renderCond :: SqlDb db => RenderConfig -> Cond db r -> Maybe (RenderS db r) Source
Renders conditions for SQL backend. Returns Nothing if the fields don't have any columns.
renderOrders :: SqlDb db => RenderConfig -> [Order db r] -> RenderS db r Source
renderUpdates :: SqlDb db => RenderConfig -> [Update db r] -> Maybe (RenderS db r) Source
renderFields :: StringLike s => (s -> s) -> [(String, DbType)] -> s Source
renderChain :: RenderConfig -> FieldChain -> [Utf8] -> [Utf8] Source
renderExpr :: SqlDb db => RenderConfig -> UntypedExpr db r -> RenderS db r Source
renderExprPriority :: SqlDb db => RenderConfig -> Int -> UntypedExpr db r -> RenderS db r Source
renderExprExtended :: SqlDb db => RenderConfig -> Int -> UntypedExpr db r -> [RenderS db r] Source
renderPersistValue :: PersistValue -> RenderS db r Source
mkExprWithConf :: (SqlDb db, PersistField a) => (RenderConfig -> Int -> Expr db r a) -> Expr db r a Source
Helps creating an expression which depends on render configuration. It can be used in pair with prerenderExpr
.
myExpr x = mkExprWithConf $ conf _ -> let
x' = prerenderExpr conf x
in x' + x' * x'
@
prerenderExpr :: SqlDb db => RenderConfig -> Expr db r a -> Expr db r a Source
If we reuse complex expression several times, prerendering it saves time. RenderConfig
can be obtained with mkExprWithConf
intercalateS :: StringLike s => s -> [s] -> s Source
commasJoin :: StringLike s => [s] -> s Source
flatten :: StringLike s => (s -> s) -> (String, DbType) -> [s] -> [s] Source
RenderS | |
|
Datatype for incremental building SQL queries
newtype RenderConfig Source
fromUtf8 :: Utf8 -> ByteString Source
class (Monoid a, IsString a) => StringLike a where Source
StringLike String | |
StringLike Utf8 | |
StringLike (RenderS db r) |
fromString :: IsString a => String -> a
operator :: (SqlDb db, Expression db r a, Expression db r b) => Int -> String -> a -> b -> Snippet db r Source
Escape function, priority of the outer operator. The result is a list for the embedded data which may expand to several RenderS.
Snippet (RenderConfig -> Int -> [RenderS db r]) |
class (DbDescriptor db, QueryRaw db ~ Snippet db) => SqlDb db where Source
This class distinguishes databases which support SQL-specific expressions. It contains ad hoc members for features whose syntax differs across the databases.
append :: (ExpressionOf db r a String, ExpressionOf db r b String) => a -> b -> Expr db r String Source
signum' :: (ExpressionOf db r x a, Num a) => x -> Expr db r a Source
quotRem' :: (ExpressionOf db r x a, ExpressionOf db r y a, Integral a) => x -> y -> (Expr db r a, Expr db r a) Source
equalsOperator :: RenderS db r -> RenderS db r -> RenderS db r Source
notEqualsOperator :: RenderS db r -> RenderS db r -> RenderS db r Source
class SqlDb db => FloatingSqlDb db where Source
This class distinguishes databases which support trigonometry and other math functions. For example, PostgreSQL has them but Sqlite does not. It contains ad hoc members for features whose syntax differs across the databases.
log' :: (ExpressionOf db r x a, Floating a) => x -> Expr db r a Source
Natural logarithm
logBase' :: (ExpressionOf db r b a, ExpressionOf db r x a, Floating a) => b -> x -> Expr db r a Source
tableName :: StringLike s => (s -> s) -> EntityDef -> ConstructorDef -> s Source
Returns escaped table name optionally qualified with schema
mainTableName :: StringLike s => (s -> s) -> EntityDef -> s Source
Returns escaped main table name optionally qualified with schema