module Queries where import Database.HSQL createTables :: Connection -> IO () createTables c = do execute c "create table Test(id integer not null, name varchar(255) not null)" dropTables :: Connection -> IO () dropTables c = do execute c "drop table Test" insertRecords :: Connection -> IO () insertRecords c = do execute c "insert into Test(id,name) values (1,'Test1')" execute c "insert into Test(id,name) values (2,'Test2')" execute c "insert into Test(id,name) values (3,'Test3')" execute c "insert into Test(id,name) values (4,'Test4')" retrieveRecords :: Connection -> IO [(Int,String)] retrieveRecords c = do query c "select id, name from Test" >>= collectRows getRow where getRow :: Statement -> IO (Int,String) getRow stmt = do id <- getFieldValue stmt "id" name <- getFieldValue stmt "name" return (id,name) getMetaInfo :: Connection -> IO [(String,[FieldDef])] getMetaInfo c = do ts <- tables c mapM (\t -> describe c t >>= \cs -> return (t,cs)) ts