module Database.HaskellDB.Sql.Generate (SqlGenerator(..)) where
import Database.HaskellDB.PrimQuery
import Database.HaskellDB.FieldType
import Database.HaskellDB.Sql
data SqlGenerator = SqlGenerator
{
sqlQuery :: PrimQuery -> SqlSelect,
sqlUpdate :: TableName -> [PrimExpr] -> Assoc -> SqlUpdate,
sqlDelete :: TableName -> [PrimExpr] -> SqlDelete,
sqlInsert :: TableName -> Assoc -> SqlInsert,
sqlInsertQuery :: TableName -> PrimQuery -> SqlInsert,
sqlCreateDB :: String -> SqlCreate,
sqlCreateTable :: TableName -> [(Attribute,FieldDesc)] -> SqlCreate,
sqlDropDB :: String -> SqlDrop,
sqlDropTable :: TableName -> SqlDrop,
sqlEmpty :: SqlSelect,
sqlTable :: TableName -> Scheme -> SqlSelect,
sqlProject :: Assoc -> SqlSelect -> SqlSelect,
sqlGroup :: Assoc -> SqlSelect -> SqlSelect,
sqlRestrict :: PrimExpr -> SqlSelect -> SqlSelect,
sqlBinary :: RelOp -> SqlSelect -> SqlSelect -> SqlSelect,
sqlSpecial :: SpecialOp -> SqlSelect -> SqlSelect,
sqlExpr :: PrimExpr -> SqlExpr,
sqlLiteral :: Literal -> String,
sqlType :: FieldType -> SqlType,
sqlQuote :: String -> String
}