-----------------------------------------------------------
-- |
-- Module      :  DBSpecToDatabase
-- Copyright   :  HWT Group (c) 2004, haskelldb-users@lists.sourceforge.net
-- License     :  BSD-style
-- 
-- Maintainer  :  haskelldb-users@lists.sourceforge.net
-- Stability   :  experimental
-- Portability :  non-portable
--
-- Connects to a database and generates stuff in it according
-- to what's inside the DBSpec.
--
-- 
-----------------------------------------------------------
module Database.HaskellDB.DBSpec.DBSpecToDatabase 
    (dbSpecToDatabase,tInfoToTable)
    where

import Database.HaskellDB.Database
import Database.HaskellDB.FieldType
import Database.HaskellDB.DBSpec.DBInfo

-- | Converts a DBInfo to a real life Database, note that the database must
-- exist for this to work
dbSpecToDatabase :: Database -- ^ A Database
		 -> DBInfo -- ^ The DBInfo to generate from
		 -> IO ()
dbSpecToDatabase db = mapM_ (tInfoToTable db) . tbls

-- | Create a database table specified by a 'TInfo'.
tInfoToTable :: Database -> TInfo -> IO ()
tInfoToTable db t = createTable db (tname t) (tInfoCols t)

tInfoCols :: TInfo -> [(String,FieldDesc)] 
tInfoCols t = [(cname c, descr c) | c <- cols t, cname c /= ""]