-----------------------------------------------------------
-- |
-- Module      :  Database.HaskellDB.HDBC.SQLite3
-- Copyright   :  HWT Group 2003, 
--                Bjorn Bringert 2005-2006
-- License     :  BSD-style
-- 
-- Maintainer  :  haskelldb-users@lists.sourceforge.net
-- Stability   :  experimental
-- Portability :  non-portable
--
-- Interface to the HDBC sqlite3 back-end.
--
-----------------------------------------------------------
module Database.HaskellDB.HDBC.SQLite3 (
		   SQLiteOptions(..), sqliteConnect,
                   DriverInterface(..), driver
		  ) where

import Database.HaskellDB.Database
import Database.HaskellDB.HDBC
import Database.HaskellDB.DriverAPI
import Database.HaskellDB.Sql.SQLite as SQLite
import Database.HDBC.Sqlite3 (connectSqlite3) 

import System.IO

data SQLiteOptions = SQLiteOptions { 
				    filepath :: FilePath
                  		   }

sqliteConnect :: MonadIO m => FilePath -> (Database -> m a) -> m a
sqliteConnect path = hdbcConnect SQLite.generator (connectSqlite3 path)

options :: [(String, String)]
options =
    ("filepath", "File path") :
    []

sqliteConnectOpts :: MonadIO m => [(String,String)] -> (Database -> m a) -> m a
sqliteConnectOpts opts f = 
    do
    [a] <- getAnnotatedOptions options opts
    sqliteConnect a f

-- | This driver requires the following options: 
--   "filepath"
driver :: DriverInterface
driver = defaultdriver {connect = sqliteConnectOpts, requiredOptions = options}