content: -----------------------------------------------------------
  -- |
  -- Module      :  Database.HaskellDB.Sql.SQLite
  -- Copyright   :  Bjorn Bringert 2006
  -- License     :  BSD-style
  -- 
  -- Maintainer  :  haskelldb-users@lists.sourceforge.net
  -- Stability   :  experimental
  -- Portability :  non-portable
  -- 
  -- SQL generation for SQLite.
  -- See <http://www.sqlite.org/lang.html> for documentation.
  -- 
  -----------------------------------------------------------
  module Database.HaskellDB.Sql.SQLite (generator) where
  
  import Database.HaskellDB.Sql.Default
  import Database.HaskellDB.Sql.Generate
  import Database.HaskellDB.PrimQuery
  
  generator :: SqlGenerator
  generator = (mkSqlGenerator generator)
              {
               sqlLiteral = literal
              }
  
  literal :: Literal -> String
  literal (StringLit s)   = quote s
  literal DefaultLit      = "NULL"
  literal (BoolLit True)  = "1"
  literal (BoolLit False) = "0"
  literal l = defaultSqlLiteral generator l
  
  {-
  From http://www.sqlite.org/lang_expr.html
  
  "A string constant is formed by enclosing the string in single quotes ('). 
  A single quote within the string can be encoded by putting two single quotes 
  in a row - as in Pascal. C-style escapes using the backslash character 
  are not supported because they are not standard SQL."
  -}
  quote :: String -> String
  quote s = "'" ++ concatMap escape s ++ "'"
  
  escape :: Char -> String
  escape '\'' = "''"
  escape c = [c]
  