--- casket を R/W モードで開く。成功したらそのまま返し、失敗したら
--- indexDir と revFile を削除してから casket を R/W モードで開く。
-openIndex :: FilePath -> FilePath -> IO Database
-openIndex indexDir revFile
- = do ret <- openDatabase indexDir (Writer [])
- case ret of
- Right db
- -> do debugM logger ("Opened an H.E. database on " ++ indexDir)
- return db
-
- Left err
- -> do warningM logger ("Failed to open an H.E. database on "
- ++ indexDir ++ ": " ++ show err)
-
- indexExists <- doesDirectoryExist indexDir
- when indexExists
- $ removeDirectoryRecursive indexDir
-
- revFileExists <- doesFileExist revFile
- when revFileExists
- $ removeFile revFile
-
- Right db <- openDatabase indexDir (Writer [Create []])
- noticeM logger ("Created an H.E. database on " ++ indexDir)
-
- return db
+rebuildIndex :: MonadIO m => Storage -> m ()
+rebuildIndex sto
+ = liftIO $ atomically $ writeTChan (stoIndexChan sto) RebuildIndex