----------------------------------------------------------- -- | -- Module : Database.HaskellDB.Sql.Generate -- Copyright : Daan Leijen (c) 1999, daan@cs.uu.nl -- HWT Group (c) 2003, haskelldb-users@lists.sourceforge.net -- License : BSD-style -- -- Maintainer : haskelldb-users@lists.sourceforge.net -- Stability : experimental -- Portability : non-portable -- -- The type of SQL generators. -- ----------------------------------------------------------- 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, -- | Ensures non-aggregate expressions in the select are included in -- group by clause. 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, -- | Turn a string into a quoted string. Quote characters -- and any escaping are handled by this function. sqlQuote :: String -> String }