packages feed

scion-browser 0.2.12 → 0.2.13

raw patch · 7 files changed

+41/−33 lines, 7 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ Scion.PersistentBrowser: type SQL a = SqlPersist (ResourceT IO) a
- Scion.PersistentBrowser: DbConstructor :: String -> String -> Key backend (DbDeclGeneric backend) -> DbConstructorGeneric
+ Scion.PersistentBrowser: DbConstructor :: String -> String -> KeyBackend backend (DbDeclGeneric backend) -> DbConstructorGeneric backend
- Scion.PersistentBrowser: DbContext :: String -> Key backend (DbDeclGeneric backend) -> DbContextGeneric
+ Scion.PersistentBrowser: DbContext :: String -> KeyBackend backend (DbDeclGeneric backend) -> DbContextGeneric backend
- Scion.PersistentBrowser: DbDecl :: DbDeclType -> String -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> Key backend (DbModuleGeneric backend) -> DbDeclGeneric
+ Scion.PersistentBrowser: DbDecl :: DbDeclType -> String -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> KeyBackend backend (DbModuleGeneric backend) -> DbDeclGeneric backend
- Scion.PersistentBrowser: DbFunDep :: String -> Key backend (DbDeclGeneric backend) -> DbFunDepGeneric
+ Scion.PersistentBrowser: DbFunDep :: String -> KeyBackend backend (DbDeclGeneric backend) -> DbFunDepGeneric backend
- Scion.PersistentBrowser: DbModule :: String -> Maybe String -> Key backend (DbPackageGeneric backend) -> DbModuleGeneric
+ Scion.PersistentBrowser: DbModule :: String -> Maybe String -> KeyBackend backend (DbPackageGeneric backend) -> DbModuleGeneric backend
- Scion.PersistentBrowser: DbPackage :: String -> String -> Maybe String -> DbPackageGeneric
+ Scion.PersistentBrowser: DbPackage :: String -> String -> Maybe String -> DbPackageGeneric backend
- Scion.PersistentBrowser: DbTyVar :: String -> Key backend (DbDeclGeneric backend) -> DbTyVarGeneric
+ Scion.PersistentBrowser: DbTyVar :: String -> KeyBackend backend (DbDeclGeneric backend) -> DbTyVarGeneric backend
- Scion.PersistentBrowser: data DbConstructorGeneric (backend :: (* -> *) -> * -> *)
+ Scion.PersistentBrowser: data DbConstructorGeneric backend
- Scion.PersistentBrowser: data DbContextGeneric (backend :: (* -> *) -> * -> *)
+ Scion.PersistentBrowser: data DbContextGeneric backend
- Scion.PersistentBrowser: data DbDeclGeneric (backend :: (* -> *) -> * -> *)
+ Scion.PersistentBrowser: data DbDeclGeneric backend
- Scion.PersistentBrowser: data DbFunDepGeneric (backend :: (* -> *) -> * -> *)
+ Scion.PersistentBrowser: data DbFunDepGeneric backend
- Scion.PersistentBrowser: data DbModuleGeneric (backend :: (* -> *) -> * -> *)
+ Scion.PersistentBrowser: data DbModuleGeneric backend
- Scion.PersistentBrowser: data DbPackageGeneric (backend :: (* -> *) -> * -> *)
+ Scion.PersistentBrowser: data DbPackageGeneric backend
- Scion.PersistentBrowser: data DbTyVarGeneric (backend :: (* -> *) -> * -> *)
+ Scion.PersistentBrowser: data DbTyVarGeneric backend
- Scion.PersistentBrowser: dbConstructorDeclId :: DbConstructorGeneric -> Key backend (DbDeclGeneric backend)
+ Scion.PersistentBrowser: dbConstructorDeclId :: DbConstructorGeneric backend -> KeyBackend backend (DbDeclGeneric backend)
- Scion.PersistentBrowser: dbConstructorName :: DbConstructorGeneric -> String
+ Scion.PersistentBrowser: dbConstructorName :: DbConstructorGeneric backend -> String
- Scion.PersistentBrowser: dbConstructorSignature :: DbConstructorGeneric -> String
+ Scion.PersistentBrowser: dbConstructorSignature :: DbConstructorGeneric backend -> String
- Scion.PersistentBrowser: dbContextDeclId :: DbContextGeneric -> Key backend (DbDeclGeneric backend)
+ Scion.PersistentBrowser: dbContextDeclId :: DbContextGeneric backend -> KeyBackend backend (DbDeclGeneric backend)
- Scion.PersistentBrowser: dbContextShown :: DbContextGeneric -> String
+ Scion.PersistentBrowser: dbContextShown :: DbContextGeneric backend -> String
- Scion.PersistentBrowser: dbDeclDeclType :: DbDeclGeneric -> DbDeclType
+ Scion.PersistentBrowser: dbDeclDeclType :: DbDeclGeneric backend -> DbDeclType
- Scion.PersistentBrowser: dbDeclDoc :: DbDeclGeneric -> Maybe String
+ Scion.PersistentBrowser: dbDeclDoc :: DbDeclGeneric backend -> Maybe String
- Scion.PersistentBrowser: dbDeclEquals :: DbDeclGeneric -> Maybe String
+ Scion.PersistentBrowser: dbDeclEquals :: DbDeclGeneric backend -> Maybe String
- Scion.PersistentBrowser: dbDeclKind :: DbDeclGeneric -> Maybe String
+ Scion.PersistentBrowser: dbDeclKind :: DbDeclGeneric backend -> Maybe String
- Scion.PersistentBrowser: dbDeclModuleId :: DbDeclGeneric -> Key backend (DbModuleGeneric backend)
+ Scion.PersistentBrowser: dbDeclModuleId :: DbDeclGeneric backend -> KeyBackend backend (DbModuleGeneric backend)
- Scion.PersistentBrowser: dbDeclName :: DbDeclGeneric -> String
+ Scion.PersistentBrowser: dbDeclName :: DbDeclGeneric backend -> String
- Scion.PersistentBrowser: dbDeclSignature :: DbDeclGeneric -> Maybe String
+ Scion.PersistentBrowser: dbDeclSignature :: DbDeclGeneric backend -> Maybe String
- Scion.PersistentBrowser: dbFunDepDeclId :: DbFunDepGeneric -> Key backend (DbDeclGeneric backend)
+ Scion.PersistentBrowser: dbFunDepDeclId :: DbFunDepGeneric backend -> KeyBackend backend (DbDeclGeneric backend)
- Scion.PersistentBrowser: dbFunDepName :: DbFunDepGeneric -> String
+ Scion.PersistentBrowser: dbFunDepName :: DbFunDepGeneric backend -> String
- Scion.PersistentBrowser: dbModuleDoc :: DbModuleGeneric -> Maybe String
+ Scion.PersistentBrowser: dbModuleDoc :: DbModuleGeneric backend -> Maybe String
- Scion.PersistentBrowser: dbModuleName :: DbModuleGeneric -> String
+ Scion.PersistentBrowser: dbModuleName :: DbModuleGeneric backend -> String
- Scion.PersistentBrowser: dbModulePackageId :: DbModuleGeneric -> Key backend (DbPackageGeneric backend)
+ Scion.PersistentBrowser: dbModulePackageId :: DbModuleGeneric backend -> KeyBackend backend (DbPackageGeneric backend)
- Scion.PersistentBrowser: dbPackageDoc :: DbPackageGeneric -> Maybe String
+ Scion.PersistentBrowser: dbPackageDoc :: DbPackageGeneric backend -> Maybe String
- Scion.PersistentBrowser: dbPackageName :: DbPackageGeneric -> String
+ Scion.PersistentBrowser: dbPackageName :: DbPackageGeneric backend -> String
- Scion.PersistentBrowser: dbPackageVersion :: DbPackageGeneric -> String
+ Scion.PersistentBrowser: dbPackageVersion :: DbPackageGeneric backend -> String
- Scion.PersistentBrowser: dbTyVarDeclId :: DbTyVarGeneric -> Key backend (DbDeclGeneric backend)
+ Scion.PersistentBrowser: dbTyVarDeclId :: DbTyVarGeneric backend -> KeyBackend backend (DbDeclGeneric backend)
- Scion.PersistentBrowser: dbTyVarName :: DbTyVarGeneric -> String
+ Scion.PersistentBrowser: dbTyVarName :: DbTyVarGeneric backend -> String
- Scion.PersistentBrowser: type DbConstructor = DbConstructorGeneric SqlPersist
+ Scion.PersistentBrowser: type DbConstructor = DbConstructorGeneric SqlBackend
- Scion.PersistentBrowser: type DbConstructorId = Key SqlPersist DbConstructor
+ Scion.PersistentBrowser: type DbConstructorId = KeyBackend SqlBackend DbConstructor
- Scion.PersistentBrowser: type DbContext = DbContextGeneric SqlPersist
+ Scion.PersistentBrowser: type DbContext = DbContextGeneric SqlBackend
- Scion.PersistentBrowser: type DbContextId = Key SqlPersist DbContext
+ Scion.PersistentBrowser: type DbContextId = KeyBackend SqlBackend DbContext
- Scion.PersistentBrowser: type DbDecl = DbDeclGeneric SqlPersist
+ Scion.PersistentBrowser: type DbDecl = DbDeclGeneric SqlBackend
- Scion.PersistentBrowser: type DbDeclId = Key SqlPersist DbDecl
+ Scion.PersistentBrowser: type DbDeclId = KeyBackend SqlBackend DbDecl
- Scion.PersistentBrowser: type DbFunDep = DbFunDepGeneric SqlPersist
+ Scion.PersistentBrowser: type DbFunDep = DbFunDepGeneric SqlBackend
- Scion.PersistentBrowser: type DbFunDepId = Key SqlPersist DbFunDep
+ Scion.PersistentBrowser: type DbFunDepId = KeyBackend SqlBackend DbFunDep
- Scion.PersistentBrowser: type DbModule = DbModuleGeneric SqlPersist
+ Scion.PersistentBrowser: type DbModule = DbModuleGeneric SqlBackend
- Scion.PersistentBrowser: type DbModuleId = Key SqlPersist DbModule
+ Scion.PersistentBrowser: type DbModuleId = KeyBackend SqlBackend DbModule
- Scion.PersistentBrowser: type DbPackage = DbPackageGeneric SqlPersist
+ Scion.PersistentBrowser: type DbPackage = DbPackageGeneric SqlBackend
- Scion.PersistentBrowser: type DbPackageId = Key SqlPersist DbPackage
+ Scion.PersistentBrowser: type DbPackageId = KeyBackend SqlBackend DbPackage
- Scion.PersistentBrowser: type DbTyVar = DbTyVarGeneric SqlPersist
+ Scion.PersistentBrowser: type DbTyVar = DbTyVarGeneric SqlBackend
- Scion.PersistentBrowser: type DbTyVarId = Key SqlPersist DbTyVar
+ Scion.PersistentBrowser: type DbTyVarId = KeyBackend SqlBackend DbTyVar
- Scion.PersistentBrowser.Query: allPackageIds :: Maybe DbPackageIdentifier -> SqlPersist IO [DbPackageIdentifier]
+ Scion.PersistentBrowser.Query: allPackageIds :: Maybe DbPackageIdentifier -> SQL [DbPackageIdentifier]
- Scion.PersistentBrowser.Query: allPackages :: Maybe DbPackageIdentifier -> SqlPersist IO [DbPackage]
+ Scion.PersistentBrowser.Query: allPackages :: Maybe DbPackageIdentifier -> SQL [DbPackage]
- Scion.PersistentBrowser.Query: constructorsByName :: String -> SqlPersist IO [DbConstructor]
+ Scion.PersistentBrowser.Query: constructorsByName :: String -> SQL [DbConstructor]
- Scion.PersistentBrowser.Query: createIndexes :: SqlPersist IO ()
+ Scion.PersistentBrowser.Query: createIndexes :: SQL ()
- Scion.PersistentBrowser.Query: declsByName :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [DbDecl]
+ Scion.PersistentBrowser.Query: declsByName :: String -> Maybe DbPackageIdentifier -> SQL [DbDecl]
- Scion.PersistentBrowser.Query: getAllDeclInfo :: (DbDeclId, DbDecl) -> SqlPersist IO DbCompleteDecl
+ Scion.PersistentBrowser.Query: getAllDeclInfo :: (DbDeclId, DbDecl) -> SQL DbCompleteDecl
- Scion.PersistentBrowser.Query: getDbModule :: HasDbModule d => d -> SqlPersist IO DbModule
+ Scion.PersistentBrowser.Query: getDbModule :: HasDbModule d => d -> SQL DbModule
- Scion.PersistentBrowser.Query: getDbPackage :: HasDbPackage d => d -> SqlPersist IO DbPackage
+ Scion.PersistentBrowser.Query: getDbPackage :: HasDbPackage d => d -> SQL DbPackage
- Scion.PersistentBrowser.Query: getDeclsFromPrefix :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [(DbPackageIdentifier, DbModule, DbCompleteDecl)]
+ Scion.PersistentBrowser.Query: getDeclsFromPrefix :: String -> Maybe DbPackageIdentifier -> SQL [(DbPackageIdentifier, DbModule, DbCompleteDecl)]
- Scion.PersistentBrowser.Query: getDeclsInModule :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [(DbPackageIdentifier, DbCompleteDecl)]
+ Scion.PersistentBrowser.Query: getDeclsInModule :: String -> Maybe DbPackageIdentifier -> SQL [(DbPackageIdentifier, DbCompleteDecl)]
- Scion.PersistentBrowser.Query: getModulesWhereDeclarationIs :: String -> SqlPersist IO [(DbModule, String)]
+ Scion.PersistentBrowser.Query: getModulesWhereDeclarationIs :: String -> SQL [(DbModule, String)]
- Scion.PersistentBrowser.Query: getPackage :: DbPackageIdentifier -> SqlPersist IO (Maybe (DbPackage))
+ Scion.PersistentBrowser.Query: getPackage :: DbPackageIdentifier -> SQL (Maybe (DbPackage))
- Scion.PersistentBrowser.Query: getSubmodules :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [DbModule]
+ Scion.PersistentBrowser.Query: getSubmodules :: String -> Maybe DbPackageIdentifier -> SQL [DbModule]
- Scion.PersistentBrowser.Query: modulesByName :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [DbModule]
+ Scion.PersistentBrowser.Query: modulesByName :: String -> Maybe DbPackageIdentifier -> SQL [DbModule]
- Scion.PersistentBrowser.Query: packagesByName :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [DbPackage]
+ Scion.PersistentBrowser.Query: packagesByName :: String -> Maybe DbPackageIdentifier -> SQL [DbPackage]
- Scion.PersistentBrowser.Query: queryDb :: String -> [String] -> ([PersistValue] -> a) -> SqlPersist IO [a]
+ Scion.PersistentBrowser.Query: queryDb :: String -> [String] -> ([PersistValue] -> a) -> SQL [a]
- Scion.PersistentHoogle: query :: Maybe String -> String -> SqlPersist IO [Result]
+ Scion.PersistentHoogle: query :: Maybe String -> String -> SQL [Result]

Files

scion-browser.cabal view
@@ -1,5 +1,5 @@ name:           scion-browser
-version:        0.2.12
+version:        0.2.13
 cabal-version:  >= 1.8
 build-type:     Simple
 license:        BSD3
src/Scion/PersistentBrowser/Build.hs view
@@ -32,6 +32,7 @@ import Text.ParserCombinators.Parsec.Pos (newPos)
 import Text.ParserCombinators.ReadP
 import Control.Monad (when)
+import Data.Conduit (runResourceT)
 
 baseDbUrl :: String
 baseDbUrl = "http://haskell.org/hoogle/base.txt"
@@ -65,7 +66,7 @@ 
 saveHackageDatabaseWithTmp :: FilePath -> FilePath -> IO ()
 saveHackageDatabaseWithTmp file tmp = do (db, _) <- createHackageDatabase tmp
-                                         withSqliteConn (T.pack file) (runSqlConn (mapM_ savePackageToDb db))
+                                         runResourceT $ withSqliteConn (T.pack file) (runSqlConn (mapM_ savePackageToDb db))
                                          --mapM_ (\pkg -> withSqliteConn (T.pack file) (runSqlConn (savePackageToDb pkg))) db
 
 -- | Downloads the information for the entire Hackage database
@@ -104,9 +105,9 @@ 
 -- | Updates a database with changes in the installed package base.
 updateDatabase :: FilePath -> [InstalledPackageInfo] -> IO ()
-updateDatabase file pkgInfo = withSqliteConn (T.pack file) $ runSqlConn $ updateDatabase' pkgInfo
+updateDatabase file pkgInfo = runResourceT $ withSqliteConn (T.pack file) $ runSqlConn $ updateDatabase' pkgInfo
 
-updateDatabase' :: [InstalledPackageInfo] -> SqlPersist IO ()
+updateDatabase' :: [InstalledPackageInfo] -> SQL ()
 updateDatabase' pkgInfo = 
   do dbPersistent <- selectList ([] :: [Filter DbPackage]) []
      let dbList        = map (fromDbToPackageIdentifier . entityVal) dbPersistent
src/Scion/PersistentBrowser/DbTypes.hs view
@@ -6,6 +6,9 @@ -- import Database.Persist.Base
 import Database.Persist.Sqlite
 import Database.Persist.TH
+import Data.Conduit (ResourceT)
+
+type SQL a= SqlPersist (ResourceT IO) a
 
 data DbDeclType = DbData | DbNewType | DbClass | DbInstance | DbSignature | DbType
     deriving (Show, Read, Eq)
src/Scion/PersistentBrowser/Query.hs view
@@ -15,27 +15,27 @@ import Data.Char (toUpper)
 
 -- |Get the identifiers of all packages in the database.
-allPackageIds :: Maybe DbPackageIdentifier -> SqlPersist IO [DbPackageIdentifier]
+allPackageIds :: Maybe DbPackageIdentifier -> SQL [DbPackageIdentifier]
 allPackageIds pkgs = do packages <- allPackages pkgs
                         return $ map dbPackageToIdentifier packages
 
 -- |Get information of all packages in the database.
-allPackages :: Maybe DbPackageIdentifier -> SqlPersist IO [DbPackage]
+allPackages :: Maybe DbPackageIdentifier -> SQL [DbPackage]
 allPackages _ = do packages <- selectList ([] :: [Filter DbPackage]) []
                    return $ map entityVal packages
 
 -- |Get information of all versions of the package with that name.
-packagesByName :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [DbPackage]
+packagesByName :: String -> Maybe DbPackageIdentifier -> SQL [DbPackage]
 packagesByName name _ = do packages <- selectList [ DbPackageName ==. name ] []
                            return $ map entityVal packages
 
 -- |Get information about a package in the database.
-getPackage :: DbPackageIdentifier -> SqlPersist IO (Maybe (DbPackage))
+getPackage :: DbPackageIdentifier -> SQL (Maybe (DbPackage))
 getPackage (DbPackageIdentifier name version) = do package <- selectFirst [ DbPackageName ==. name, DbPackageVersion ==. version ] []
                                                    return $ fmap entityVal package
 
 -- |Get information about all modules with that name.
-modulesByName :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [DbModule]
+modulesByName :: String -> Maybe DbPackageIdentifier -> SQL [DbModule]
 modulesByName name Nothing = do mods <- selectList [ DbModuleName ==. name ] []
                                 return $ map entityVal mods
 modulesByName name (Just (DbPackageIdentifier pkgName pkgVersion)) =
@@ -48,7 +48,7 @@ 
 -- |Get all the modules hierarchically inside the specified one.
 --  For getting the entire list of modules modules, use "" as initial name.
-getSubmodules :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [DbModule]
+getSubmodules :: String -> Maybe DbPackageIdentifier -> SQL [DbModule]
 getSubmodules "" Nothing =
   do let sql = "SELECT name, doc, packageId FROM DbModule"
      queryDb sql [] moduleAction
@@ -74,7 +74,7 @@ moduleAction _ = error "This should not happen"
 
 -- |Get information about all declaration with that name.
-declsByName :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [DbDecl]
+declsByName :: String -> Maybe DbPackageIdentifier -> SQL [DbDecl]
 declsByName name Nothing =
   do let sql = "SELECT DbDecl.declType, DbDecl.name, DbDecl.doc, DbDecl.kind, DbDecl.signature, DbDecl.equals, DbDecl.moduleId"
                ++ " FROM DbDecl, DbModule"
@@ -97,7 +97,7 @@ declAction _ = error "This should not happen"
 
 
-createIndexes :: SqlPersist IO()
+createIndexes :: SQL ()
 createIndexes=do
         -- liftIO $ logToStdout "creating indexes"
         let idxs = [ "create index if not exists module_pkgid_name on DbModule (packageId,name)"
@@ -114,7 +114,7 @@ 
 -- |Gets the declarations inside some module,
 --  along with information about which package it lives.
-getDeclsInModule :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [(DbPackageIdentifier, DbCompleteDecl)]
+getDeclsInModule :: String -> Maybe DbPackageIdentifier -> SQL [(DbPackageIdentifier, DbCompleteDecl)]
 getDeclsInModule modName pkgId =
   do let pkg = case pkgId of
                  Nothing -> ""
@@ -146,7 +146,7 @@ 
 -- | list declarations matching the given prefix, useful for content assist
 -- the prefix either matches the declaration itself or any constructor
-getDeclsFromPrefix :: String -> Maybe DbPackageIdentifier -> SqlPersist IO [(DbPackageIdentifier, DbModule, DbCompleteDecl)]
+getDeclsFromPrefix :: String -> Maybe DbPackageIdentifier -> SQL [(DbPackageIdentifier, DbModule, DbCompleteDecl)]
 getDeclsFromPrefix prefix pkgId =
   do let pkg = case pkgId of
                  Nothing -> ""
@@ -184,7 +184,7 @@                 -- we do case insensitive match here to be consistent with LIKE above
                 return $ filter (\(DbConstructor name _ _)->isPrefixOf (map toUpper prefix) (map toUpper name)) $ map entityVal consts'
 
-getAllDeclInfo :: (DbDeclId, DbDecl) -> SqlPersist IO DbCompleteDecl
+getAllDeclInfo :: (DbDeclId, DbDecl) -> SQL DbCompleteDecl
 getAllDeclInfo (declId, decl) =
   do ctxs' <- selectList [ DbContextDeclId ==. declId] []
      let ctxs = map entityVal ctxs'
@@ -197,12 +197,12 @@      return $ DbCompleteDecl decl ctxs tyvars fundeps consts
 
 -- |Get information about all constructors with that name.
-constructorsByName :: String -> SqlPersist IO [DbConstructor]
+constructorsByName :: String -> SQL [DbConstructor]
 constructorsByName name = do consts <- selectList [ DbConstructorName ==. name ] []
                              return $ map entityVal consts
 
 -- | Gets a list of modules where a declaration may live
-getModulesWhereDeclarationIs :: String -> SqlPersist IO [(DbModule,String)]
+getModulesWhereDeclarationIs :: String -> SQL [(DbModule,String)]
 getModulesWhereDeclarationIs declName =
   do let sqlDecl = "SELECT DbModule.name, DbModule.doc, DbModule.packageId,''"
                    ++ " FROM DbDecl, DbModule"
@@ -219,7 +219,7 @@         action _ = error "This should not happen"
 
 -- |Executes a query.
-queryDb :: String -> [String] -> ([PersistValue] -> a) -> SqlPersist IO [a]
+queryDb :: String -> [String] -> ([PersistValue] -> a) -> SQL [a]
 queryDb sql params action = runResourceT (withStmt (T.pack sql) (map toPersistValue params) $= CL.map action $$ CL.consume)
 
 -- |Gets information from a text value.
@@ -230,31 +230,32 @@ 
 -- |Things that reside on a package.
 class HasDbPackage d where
-  getDbPackage :: d -> SqlPersist IO DbPackage
+  getDbPackage :: d -> SQL DbPackage
 
 instance HasDbPackage DbPackage where
   getDbPackage = return
 
 instance HasDbPackage DbModule where
-  getDbPackage (DbModule _ _ pkgId) = do Just pkg <- get pkgId
+  getDbPackage (DbModule _ _ pkgId) = do pkg <- getJust pkgId
                                          return pkg
 
 instance HasDbPackage DbDecl where
-  getDbPackage (DbDecl _ _ _ _ _ _ modId) = do Just md <- get modId
+  getDbPackage (DbDecl _ _ _ _ _ _ modId) = do md <- getJust modId
                                                getDbPackage md
 
 -- |Things that reside on a module.
 class HasDbModule d where
-  getDbModule :: d -> SqlPersist IO DbModule
+  getDbModule :: d -> SQL DbModule
 
 instance HasDbModule DbModule where
   getDbModule = return
 
 instance HasDbModule DbDecl where
-  getDbModule (DbDecl _ _ _ _ _ _ modId) = do Just md <- get modId
+  getDbModule (DbDecl _ _ _ _ _ _ modId) = do md <- getJust modId
                                               return md
 
 instance HasDbModule DbConstructor where
-  getDbModule (DbConstructor _ _ declId) = do Just dc <- get declId
+  getDbModule (DbConstructor _ _ declId) = do 
+                                              dc <-  getJust declId
                                               getDbModule dc
 
src/Scion/PersistentHoogle.hs view
@@ -10,6 +10,7 @@ import Database.Persist.Sqlite
 import Scion.PersistentBrowser ()
 import Scion.PersistentBrowser.Util
+import Scion.PersistentBrowser.DbTypes
 
 import Scion.PersistentHoogle.Types
 import Scion.PersistentHoogle.Instances.Json ()
@@ -19,7 +20,7 @@ import System.Process
 import Text.Parsec.Prim (runP)
 
-query :: Maybe String -> String -> SqlPersist IO [Result]
+query :: Maybe String -> String -> SQL [Result]
 query p q = do mpath <- liftIO $ findHoogleBinPath p
                case mpath of
                  Nothing   -> return []
src/Scion/PersistentHoogle/Parser.hs view
@@ -24,7 +24,7 @@                 | HalfGadtDecl String (Documented GadtDecl)
                 | HalfKeyword  String
 
-hoogleElements :: BSParser (SqlPersist IO [Result])
+hoogleElements :: BSParser (SQL [Result])
 hoogleElements = do elts <- hoogleElements'
                     let results = catMaybesM $ map convertHalfToResult elts
                     return results
@@ -92,7 +92,7 @@                    spaces0
                    return name
 
-convertHalfToResult :: HalfResult -> SqlPersist IO (Maybe Result)
+convertHalfToResult :: HalfResult -> SQL (Maybe Result)
 convertHalfToResult (HalfKeyword kw) =
   return $ Just (RKeyword kw)
 convertHalfToResult (HalfPackage  pname) = 
src/Server/PersistentCommands.hs view
@@ -12,11 +12,13 @@ import Database.Persist.Sqlite hiding (get)
 import Scion.PersistentBrowser
 import Scion.PersistentBrowser.Build
+import Scion.PersistentBrowser.DbTypes
 import Scion.PersistentBrowser.Query
 import Scion.PersistentBrowser.Util (logToStdout)
 import qualified Scion.PersistentHoogle as H
 import Scion.Packages
 import System.Directory
+import Data.Conduit (runResourceT)
 
 data Command = LoadLocalDatabase FilePath Bool
              | LoadHackageDatabase FilePath Bool
@@ -58,7 +60,7 @@ filterPackage (APackage pkgId)=Just pkgId
 filterPackage _ = Nothing
 
-runWithState :: BrowserState -> CurrentDatabase -> (Maybe DbPackageIdentifier -> SqlPersist IO [a]) -> IO [a]
+runWithState :: BrowserState -> CurrentDatabase -> (Maybe DbPackageIdentifier -> SQL [a]) -> IO [a]
 runWithState (BrowserState lDb hDb _) cdb action =
   do 
      let filterPkg=filterPackage cdb
@@ -66,13 +68,13 @@      hackageThings <- runWithState' (useHackage cdb) hDb (action filterPkg)
      return $ localThings ++ hackageThings
 
-runWithState' :: Bool -> Maybe FilePath -> SqlPersist IO [a] -> IO [a]
+runWithState' :: Bool -> Maybe FilePath -> SQL[a] -> IO [ a]
 runWithState' use mpath action = if use && isJust mpath
                                     then do let path = fromJust mpath
-                                            withSqliteConn (T.pack path) $ runSqlConn action
+                                            runResourceT $ withSqliteConn (T.pack path) $ runSqlConn action
                                     else return []
 
-runDb :: CurrentDatabase -> (Maybe DbPackageIdentifier -> SqlPersist IO [a]) -> BrowserM [a]
+runDb :: CurrentDatabase -> (Maybe DbPackageIdentifier -> SQL [a]) -> BrowserM [a]
 runDb cdb action = 
    do 
       st <- get
@@ -85,7 +87,7 @@   do fileExists <- lift $ doesFileExist path
      let fileExists' = fileExists `seq` fileExists
      when rebuild $
-          lift $ do withSqliteConn (T.pack path) $ runSqlConn $ do
+          lift $ do runResourceT $ withSqliteConn (T.pack path) $ runSqlConn $ do
                          runMigration migrateAll
                          createIndexes
                     pkgInfos' <- getPkgInfos
@@ -102,7 +104,7 @@      when (not fileExists' || rebuild) $
           lift $ do when fileExists' (removeFile path)
                     logToStdout "Rebuilding Hackage database"
-                    withSqliteConn (T.pack path) $ runSqlConn $ do
+                    runResourceT $ withSqliteConn (T.pack path) $ runSqlConn $ do
                         runMigration migrateAll
                         createIndexes
                     saveHackageDatabase path