module Hope.CreateDB (createDBMain) where import Hope.Module import Database.HaskellDB.PrimQuery import Database.HaskellDB.Database (Database, createTable) import Database.HaskellDB.DBSpec as DBSpec import Database.HaskellDB.Sql import Database.HaskellDB.Sql.Default import Database.HaskellDB.Sql.Generate import Database.HaskellDB.Sql.Print import System.Environment createAllTables :: Database -> [TInfo] -> IO () createAllTables db = mapM_ (\t -> createTable db (tname t) (tInfoCols t)) -- FIXME: hack, this should get the generator for the current database toCreateTable :: TableName -> [(Attribute,FieldDesc)] -> SqlCreate toCreateTable = sqlCreateTable defaultSqlGenerator createTableSQL :: TInfo -> String createTableSQL t = show $ ppCreate $ toCreateTable (tname t) $ tInfoCols t tInfoCols :: TInfo -> [(String,FieldDesc)] tInfoCols t = [(cname c, descr c) | c <- DBSpec.cols t] createDBMain :: Config -> Database -> IO () createDBMain config db = do let ms = configModules config ts = concatMap moduleTables ms args <- getArgs if "-sql" `elem` args then mapM_ (putStrLn . (++";") . createTableSQL) ts else createAllTables db ts