module Rakka.Storage
( Storage
+ -- re-export from Rakka.Storage.Types
+ , SearchResult(..)
+ , HitPage(..)
+ , SnippetFragment(..)
+
, mkStorage -- private
, getPage
, putPageA
, deletePageA
+ , getAttachment
+ , putAttachment
+
+ , getDirContents
+ , getDirContentsA
+
, searchPages
, rebuildIndex
import Control.Monad.Trans
import Data.Maybe
import Network.HTTP.Lucu
+import Rakka.Attachment
import Rakka.Page
import Rakka.Storage.Impl
import Rakka.Storage.Types
deletePageA = arrIO2 . deletePage
-searchPages :: MonadIO m => Storage -> Condition -> m [(PageName, RevNum)]
+getDirContents :: MonadIO m => Storage -> PageName -> Maybe RevNum -> m [PageName]
+getDirContents = ((liftIO .) .) . getDirContents' . stoRepository
+
+
+getDirContentsA :: ArrowIO a => Storage -> a (PageName, Maybe RevNum) [PageName]
+getDirContentsA = arrIO2 . getDirContents
+
+
+searchPages :: MonadIO m => Storage -> Condition -> m SearchResult
searchPages sto cond
= liftIO $
do var <- newEmptyTMVarIO
syncIndex sto
= atomically $ writeTChan (stoIndexChan sto) SyncIndex
+
+getAttachment :: (Attachment a, MonadIO m) =>
+ Storage
+ -> PageName
+ -> String
+ -> Maybe RevNum
+ -> m (Maybe a)
+getAttachment = (((liftIO .) .) .) . getAttachment' . stoRepository
+
+
+putAttachment :: (Attachment a, MonadIO m) =>
+ Storage
+ -> Maybe String
+ -> Maybe RevNum
+ -> PageName
+ -> String
+ -> a
+ -> m StatusCode
+putAttachment = (((((liftIO .) .) .) .) .) . putAttachment' . stoRepository