X-Git-Url: https://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FStorage.hs;h=d88a336506a23dd162278ec8b69930ab18a46879;hb=044a917ed3908780479b759ac772e1545616c7fc;hp=55037f03712294efac4ec84c9565b0e8aab62882;hpb=9681bedbfde02fa1bcda4fbbacba941378c7a57a;p=Rakka.git diff --git a/Rakka/Storage.hs b/Rakka/Storage.hs index 55037f0..d88a336 100644 --- a/Rakka/Storage.hs +++ b/Rakka/Storage.hs @@ -5,9 +5,11 @@ module Rakka.Storage , getPage , putPage + , deletePage , getPageA , putPageA + , deletePageA , searchPages @@ -20,6 +22,7 @@ import Control.Concurrent.STM import Control.Monad import Control.Monad.Trans import Data.Maybe +import Network.HTTP.Lucu import Rakka.Page import Rakka.Storage.Impl import Rakka.Storage.Types @@ -44,17 +47,30 @@ getPage :: MonadIO m => Storage -> PageName -> Maybe RevNum -> m (Maybe Page) getPage = ((liftIO .) .) . getPage' . stoRepository -putPage :: MonadIO m => Storage -> Page -> RevNum -> m () -putPage sto page oldRev - = error "FIXME: not implemented" +putPage :: MonadIO m => Storage -> Page -> m StatusCode +putPage sto page + = liftIO $ do st <- putPage' (stoRepository sto) page + syncIndex sto + return st + + +deletePage :: MonadIO m => Storage -> PageName -> m StatusCode +deletePage sto name + = liftIO $ do st <- deletePage' (stoRepository sto) name + syncIndex sto + return st getPageA :: ArrowIO a => Storage -> a (PageName, Maybe RevNum) (Maybe Page) getPageA = arrIO2 . getPage -putPageA :: ArrowIO a => Storage -> a (Page, RevNum) () -putPageA = arrIO2 . putPage +putPageA :: ArrowIO a => Storage -> a Page StatusCode +putPageA = arrIO . putPage + + +deletePageA :: ArrowIO a => Storage -> a PageName StatusCode +deletePageA = arrIO . deletePage searchPages :: MonadIO m => Storage -> Condition -> m [(PageName, RevNum)]