X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=Rakka%2FStorage.hs;h=63480de03f44fd502136e39621e1da5017b0ae32;hb=d86c5b3ded23eaa215d1903495579c19c7daf5bb;hp=3a883d37ac664882440ac7039c795ca80c2048b2;hpb=e43bb104a7313dd696b8bb8aa3bafff94706a187;p=Rakka.git diff --git a/Rakka/Storage.hs b/Rakka/Storage.hs index 3a883d3..63480de 100644 --- a/Rakka/Storage.hs +++ b/Rakka/Storage.hs @@ -20,6 +20,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 @@ -28,8 +29,6 @@ import System.IO import Subversion.Repository import Text.HyperEstraier hiding (WriteLock) -logger = "Rakka.Storage" - mkStorage :: FilePath -> Repository -> (Page -> IO Document) -> IO Storage mkStorage lsdir repos mkDraft @@ -46,17 +45,19 @@ 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 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 searchPages :: MonadIO m => Storage -> Condition -> m [(PageName, RevNum)]