
module Search where

import Data.Binary
import Data.ByteString.Lazy.Char8 (pack)
import Database.HDBC

import Binary
import Parse

type Query = String

type Result = (String, [WikiText])

search :: IConnection conn => conn -> Query -> IO [Result]
search conn query = do
    st <- prepare conn "SELECT title, text FROM page WHERE title LIKE ?"
    sExecute st [Just $ concat ["%", query, "%"]]
    fetchAllRows st >>= return . map unwrap
    where unwrap [SqlString title, SqlString text] =
              (title, decode . pack $ text)

