{- createtestdb: ShareGuard test database creation Copyright (C) 2011 Clint Adams This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . -} import Control.Monad.Trans import Database.HaskellDB.HDBC.SQLite3 import Database.HaskellDB import Database.HaskellDB.DBSpec import Database.HaskellDB.Database import Database.HaskellDB.DBSpec.PPHelpers ( mkIdentPreserving ) import Database.HaskellDB.DBLayout import Database.HaskellDB.DBSpec.DBSpecToDBDirect authnz :: DBInfo authnz = DBInfo {dbname = "Authnz", opts = DBOptions {useBString = False, makeIdent = mkIdentPreserving}, tbls = [TInfo {tname = "user", cols = [CInfo {cname = "id", descr = (IntegerT, False)}, CInfo {cname = "username", descr = (StringT, False)}, CInfo {cname = "password", descr = (StringT, False)}]}, TInfo {tname = "directory_user", cols = [CInfo {cname = "user_id", descr = (IntegerT, False)}, CInfo {cname = "directory_id", descr = (IntegerT, False)}]}, TInfo {tname = "directory", cols = [CInfo {cname = "id", descr = (IntegerT, False)}, CInfo {cname = "name", descr = (StringT, False)}, CInfo {cname = "owner_id", descr = (IntegerT, False)}]}]} main = withDB $ \db -> do -- dbSpecToDatabase db authnz dbInfoToModuleFiles "./" "ShareGuardDB" authnz withDB :: MonadIO m => (Database -> m a) -> m a withDB = sqliteConnect "authnz.db"