> 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