Safe Haskell | None |
---|
This module defines the functions which are used only for backends creation.
- renderCond :: (SqlDb db, QueryRaw db ~ Snippet db) => RenderConfig -> Cond db r -> Maybe (RenderS db r)
- defaultShowPrim :: PersistValue -> String
- renderOrders :: RenderConfig -> [Order db r] -> Utf8
- renderUpdates :: (SqlDb db, QueryRaw db ~ Snippet db) => RenderConfig -> [Update db r] -> Maybe (RenderS db r)
- renderFields :: (Utf8 -> Utf8) -> [(String, DbType)] -> Utf8
- renderChain :: RenderConfig -> FieldChain -> [Utf8] -> [Utf8]
- renderExpr :: (SqlDb db, QueryRaw db ~ Snippet db) => RenderConfig -> UntypedExpr db r -> RenderS db r
- renderExprPriority :: (SqlDb db, QueryRaw db ~ Snippet db) => RenderConfig -> Int -> UntypedExpr db r -> RenderS db r
- renderExprExtended :: (SqlDb db, QueryRaw db ~ Snippet db) => RenderConfig -> Int -> UntypedExpr db r -> [RenderS db r]
- renderPersistValue :: PersistValue -> RenderS db r
- mkExprWithConf :: (SqlDb db, QueryRaw db ~ Snippet db, PersistField a) => (RenderConfig -> Int -> Expr db r a) -> Expr db r a
- prerenderExpr :: (SqlDb db, QueryRaw db ~ Snippet db) => RenderConfig -> Expr db r a -> Expr db r a
- intercalateS :: StringLike s => s -> [s] -> s
- commasJoin :: StringLike s => [s] -> s
- flatten :: (Utf8 -> Utf8) -> (String, DbType) -> [Utf8] -> [Utf8]
- 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, QueryRaw db ~ Snippet db) => String -> [UntypedExpr db r] -> Snippet db r
- operator :: (SqlDb db, QueryRaw db ~ Snippet 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, QueryRaw db ~ Snippet db) => Snippet db r -> Expr db r a
- newtype Snippet db r = Snippet (RenderConfig -> Int -> [RenderS db r])
- class DbDescriptor 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, QueryRaw db ~ Snippet 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 :: RenderConfig -> [Order db r] -> Utf8Source
renderUpdates :: (SqlDb db, QueryRaw db ~ Snippet db) => RenderConfig -> [Update db r] -> Maybe (RenderS db r)Source
renderChain :: RenderConfig -> FieldChain -> [Utf8] -> [Utf8]Source
renderExpr :: (SqlDb db, QueryRaw db ~ Snippet db) => RenderConfig -> UntypedExpr db r -> RenderS db rSource
renderExprPriority :: (SqlDb db, QueryRaw db ~ Snippet db) => RenderConfig -> Int -> UntypedExpr db r -> RenderS db rSource
renderExprExtended :: (SqlDb db, QueryRaw db ~ Snippet db) => RenderConfig -> Int -> UntypedExpr db r -> [RenderS db r]Source
renderPersistValue :: PersistValue -> RenderS db rSource
mkExprWithConf :: (SqlDb db, QueryRaw db ~ Snippet db, PersistField a) => (RenderConfig -> Int -> Expr db r a) -> Expr db r aSource
prerenderExpr :: (SqlDb db, QueryRaw db ~ Snippet db) => RenderConfig -> Expr db r a -> Expr db r aSource
If we reuse complex expression several times, prerendering it saves time. RenderConfig
can be obtained with mkExprWithConf
intercalateS :: StringLike s => s -> [s] -> sSource
commasJoin :: StringLike s => [s] -> sSource
RenderS | |
|
Datatype for incremental building SQL queries
newtype RenderConfig Source
fromUtf8 :: Utf8 -> ByteStringSource
class (Monoid a, IsString a) => StringLike a whereSource
StringLike String | |
StringLike Utf8 | |
StringLike (RenderS db r) |
fromString :: IsString a => String -> a
function :: (SqlDb db, QueryRaw db ~ Snippet db) => String -> [UntypedExpr db r] -> Snippet db rSource
operator :: (SqlDb db, QueryRaw db ~ Snippet db, Expression db r a, Expression db r b) => Int -> String -> a -> b -> Snippet db rSource
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 => SqlDb db whereSource
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 StringSource
signum' :: (ExpressionOf db r x a, Num a) => x -> Expr db r aSource
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 rSource
notEqualsOperator :: RenderS db r -> RenderS db r -> RenderS db rSource
class SqlDb db => FloatingSqlDb db whereSource
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 aSource
Natural logarithm
logBase' :: (ExpressionOf db r b a, ExpressionOf db r x a, Floating a) => b -> x -> Expr db r aSource
tableName :: StringLike s => (s -> s) -> EntityDef -> ConstructorDef -> sSource
Returns escaped table name optionally qualified with schema
mainTableName :: StringLike s => (s -> s) -> EntityDef -> sSource
Returns escaped main table name optionally qualified with schema