groundhog-0.3.1: Type-safe datatype-database mapping library.

Safe HaskellNone

Database.Groundhog.Generic.Sql

Contents

Description

This module defines the functions which are used only for backends creation.

Synopsis

SQL rendering utilities

renderCondSource

Arguments

:: forall r db . (SqlDb db, QueryRaw db ~ Snippet db) 
=> (Utf8 -> Utf8)

escape

-> (Utf8 -> Utf8 -> Utf8)

render equals

-> (Utf8 -> Utf8 -> Utf8)

render not equals

-> Cond db r 
-> Maybe (RenderS db r) 

Renders conditions for SQL backend. Returns Nothing if the fields don't have any columns.

renderOrders :: forall db r. (Utf8 -> Utf8) -> [Order db r] -> Utf8Source

renderUpdates :: (SqlDb db, QueryRaw db ~ Snippet db) => (Utf8 -> Utf8) -> [Update db r] -> Maybe (RenderS db r)Source

renderExpr :: (DbDescriptor db, QueryRaw db ~ Snippet db) => (Utf8 -> Utf8) -> UntypedExpr db r -> RenderS db rSource

renderExprExtended :: (DbDescriptor db, QueryRaw db ~ Snippet db) => (Utf8 -> Utf8) -> Int -> UntypedExpr db r -> [RenderS db r]Source

intercalateS :: StringLike s => s -> [s] -> sSource

commasJoin :: StringLike s => [s] -> sSource

data RenderS db r Source

Constructors

RenderS 

Instances

IsString (RenderS db r) 
Monoid (RenderS db r) 
StringLike (RenderS db r) 

newtype Utf8 Source

Datatype for incremental building SQL queries

Constructors

Utf8 Builder 

class (Monoid a, IsString a) => StringLike a whereSource

Methods

fromChar :: Char -> aSource

(<>) :: Monoid m => m -> m -> m

An infix synonym for mappend.

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

parens :: Int -> Int -> RenderS db r -> RenderS db rSource

newtype 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.

Constructors

Snippet ((Utf8 -> Utf8) -> 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.

Methods

append :: (ExpressionOf db r a String, ExpressionOf db r b String) => a -> b -> Expr db r StringSource

liftExpr :: (SqlDb db, QueryRaw db ~ Snippet db, ExpressionOf db r a b) => a -> Expr db r bSource

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