4 -- re-export from Rakka.Storage.Types
30 import Control.Arrow.ArrowIO
31 import Control.Concurrent.STM
33 import Control.Monad.Trans
35 import Network.HTTP.Lucu
36 import Rakka.Attachment
38 import Rakka.Storage.Impl
39 import Rakka.Storage.Types
40 import Subversion.Types
42 import Subversion.Repository
43 import Text.HyperEstraier hiding (WriteLock)
46 mkStorage :: FilePath -> Repository -> (Page -> IO Document) -> IO Storage
47 mkStorage lsdir repos mkDraft
48 = do chan <- startIndexManager lsdir repos mkDraft
57 getPage :: MonadIO m => Storage -> PageName -> Maybe RevNum -> m (Maybe Page)
58 getPage = ((liftIO .) .) . getPage' . stoRepository
61 putPage :: MonadIO m => Storage -> Maybe String -> Page -> m StatusCode
62 putPage sto userID page
63 = liftIO $ do st <- putPage' (stoRepository sto) userID page
68 deletePage :: MonadIO m => Storage -> Maybe String -> PageName -> m StatusCode
69 deletePage sto userID name
70 = liftIO $ do st <- deletePage' (stoRepository sto) userID name
75 getPageA :: ArrowIO a => Storage -> a (PageName, Maybe RevNum) (Maybe Page)
76 getPageA = arrIO2 . getPage
79 putPageA :: ArrowIO a => Storage -> a (Maybe String, Page) StatusCode
80 putPageA = arrIO2 . putPage
83 deletePageA :: ArrowIO a => Storage -> a (Maybe String, PageName) StatusCode
84 deletePageA = arrIO2 . deletePage
87 getDirContents :: MonadIO m => Storage -> PageName -> Maybe RevNum -> m [PageName]
88 getDirContents = ((liftIO .) .) . getDirContents' . stoRepository
91 getDirContentsA :: ArrowIO a => Storage -> a (PageName, Maybe RevNum) [PageName]
92 getDirContentsA = arrIO2 . getDirContents
95 searchPages :: MonadIO m => Storage -> Condition -> m [SearchResult]
98 do var <- newEmptyTMVarIO
99 atomically $ writeTChan (stoIndexChan sto) (SearchIndex cond var)
100 atomically $ takeTMVar var
103 rebuildIndex :: MonadIO m => Storage -> m ()
105 = liftIO $ atomically $ writeTChan (stoIndexChan sto) RebuildIndex
108 syncIndex :: Storage -> IO ()
110 = atomically $ writeTChan (stoIndexChan sto) SyncIndex
113 getAttachment :: (Attachment a, MonadIO m) =>
119 getAttachment = (((liftIO .) .) .) . getAttachment' . stoRepository
122 putAttachment :: (Attachment a, MonadIO m) =>
130 putAttachment = (((((liftIO .) .) .) .) .) . putAttachment' . stoRepository