X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FStorage.hs;h=03b8c54134c3a3316e03bb18c57c145b3583d831;hb=e751af5e3d23d7757f363bf4e86f9d732d90be7f;hp=9ab15be2f1b88921e17810a9599a55e373d2808e;hpb=b101c0a9aad609704eaa9157fe809be80d2aacf7;p=Rakka.git diff --git a/Rakka/Storage.hs b/Rakka/Storage.hs index 9ab15be..03b8c54 100644 --- a/Rakka/Storage.hs +++ b/Rakka/Storage.hs @@ -1,6 +1,10 @@ module Rakka.Storage ( Storage + -- re-export from Rakka.Storage.Types + , SearchResult(..) + , SnippetFragment(..) + , mkStorage -- private , getPage @@ -11,6 +15,9 @@ module Rakka.Storage , putPageA , deletePageA + , getAttachment + , putAttachment + , getDirContents , getDirContentsA @@ -26,6 +33,7 @@ import Control.Monad 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 @@ -84,7 +92,7 @@ getDirContentsA :: ArrowIO a => Storage -> a (PageName, Maybe RevNum) [PageName] getDirContentsA = arrIO2 . getDirContents -searchPages :: MonadIO m => Storage -> Condition -> m [(PageName, RevNum)] +searchPages :: MonadIO m => Storage -> Condition -> m [SearchResult] searchPages sto cond = liftIO $ do var <- newEmptyTMVarIO @@ -101,3 +109,22 @@ syncIndex :: Storage -> IO () 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