packages feed

hssqlppp-0.1.0: Database/HsSqlPpp/Wrapper/WrapperTemplate.lhs

> module Database.HsSqlPpp.Wrapper.WrapperTemplate where

> import Language.Haskell.TH
> import Language.Haskell.TH.Quote
> import Language.Haskell.TH.Lib
> --import Control.Exception

> --import qualified Database.HDBC.PostgreSQL as Pg
> --import Database.HDBC
> import Control.Monad.Error

> import Database.HsSqlPpp.Commands.CommandComponents
> import Database.HsSqlPpp.Ast.SqlTypes as HsSql
> import Database.HsSqlPpp.Ast.TypeChecker
> import Database.HsSqlPpp.Ast.Annotation
> import Database.HsSqlPpp.Parsing.Parser



> select :: QuasiQuoter
> select = QuasiQuoter (litE . stringL) (litP . stringL)

> conv :: String -> String
> conv s = show $ parseSql "" s


> getSelectResultType :: String -> String -> IO [(String,HsSql.Type)]
> getSelectResultType dbName sqlText = wrapET $ do
>   cat <- readCatalog dbName
>   ast <- parseSql1 "" sqlText >>= typeCheckC cat >>= lsnd
>   a <- case getTopLevelInfos ast of
>          [Just (SelectInfo (SetOfType (CompositeType atts)))] ->
>            return atts
>          _ -> throwError $ AEMisc "expected one info"
>   return a

 > select :: String -> IO (Q Exp)
 > select s = return $ stringE s

 > select :: String -> Q Exp
 > select s = stringE s


 undefined