4 -- re-export from Rakka.Storage.Types
31 import Control.Arrow.ArrowIO
32 import Control.Concurrent.STM
33 import Control.Monad.Trans
34 import Network.HTTP.Lucu
35 import Rakka.Attachment
37 import Rakka.Storage.Impl
38 import Rakka.Storage.Types
39 import Subversion.Types
40 import Subversion.Repository
41 import Text.HyperEstraier hiding (WriteLock)
44 mkStorage :: FilePath -> Repository -> (Page -> IO Document) -> IO Storage
45 mkStorage lsdir repos mkDraft
46 = do chan <- startIndexManager lsdir repos mkDraft
55 getPage :: MonadIO m => Storage -> PageName -> Maybe RevNum -> m (Maybe Page)
56 getPage = ((liftIO .) .) . getPage' . stoRepository
59 putPage :: MonadIO m => Storage -> Maybe String -> Page -> m StatusCode
60 putPage sto userID page
61 = liftIO $ do st <- putPage' (stoRepository sto) userID page
66 deletePage :: MonadIO m => Storage -> Maybe String -> PageName -> m StatusCode
67 deletePage sto userID name
68 = liftIO $ do st <- deletePage' (stoRepository sto) userID name
73 getPageA :: ArrowIO a => Storage -> a (PageName, Maybe RevNum) (Maybe Page)
74 getPageA = arrIO2 . getPage
77 putPageA :: ArrowIO a => Storage -> a (Maybe String, Page) StatusCode
78 putPageA = arrIO2 . putPage
81 deletePageA :: ArrowIO a => Storage -> a (Maybe String, PageName) StatusCode
82 deletePageA = arrIO2 . deletePage
85 getDirContents :: MonadIO m => Storage -> PageName -> Maybe RevNum -> m [PageName]
86 getDirContents = ((liftIO .) .) . getDirContents' . stoRepository
89 getDirContentsA :: ArrowIO a => Storage -> a (PageName, Maybe RevNum) [PageName]
90 getDirContentsA = arrIO2 . getDirContents
93 searchPages :: MonadIO m => Storage -> Condition -> m SearchResult
96 do var <- newEmptyTMVarIO
97 atomically $ writeTChan (stoIndexChan sto) (SearchIndex cond var)
98 atomically $ takeTMVar var
101 rebuildIndex :: MonadIO m => Storage -> m ()
103 = liftIO $ atomically $ writeTChan (stoIndexChan sto) RebuildIndex
106 syncIndex :: Storage -> IO ()
108 = atomically $ writeTChan (stoIndexChan sto) SyncIndex
111 getAttachment :: (Attachment a, MonadIO m) =>
117 getAttachment = (((liftIO .) .) .) . getAttachment' . stoRepository
120 putAttachment :: (Attachment a, MonadIO m) =>
128 putAttachment = (((((liftIO .) .) .) .) .) . putAttachment' . stoRepository