packages feed

yst-0.4: Yst/Sqlite3.hs

module Yst.Sqlite3 (readSqlite3)
where

import Database.HDBC
import Database.HDBC.Sqlite3
import Data.Maybe
import Yst.Types

readSqlite3 :: FilePath -> String -> IO Node
readSqlite3 filename query = do
  conn <- connectSqlite3 filename
  stmt <- prepare conn query
  execute stmt []
  records <- sFetchAllRows' stmt
  fieldNames <- getColumnNames stmt
  disconnect conn
         
  return $ NList $ map (NMap .
                       (zip fieldNames) .
                       (map (fieldToNode . fromMaybe ""))) records

fieldToNode :: String -> Node
fieldToNode s =
  case parseAsDate s of
       Nothing -> NString s
       Just d  -> NDate d