4 -- re-export from Rakka.Storage.Types
31 import Control.Arrow.ArrowIO
32 import Control.Concurrent.STM
34 import Control.Monad.Trans
36 import Network.HTTP.Lucu
37 import Rakka.Attachment
39 import Rakka.Storage.Impl
40 import Rakka.Storage.Types
41 import Subversion.Types
43 import Subversion.Repository
44 import Text.HyperEstraier hiding (WriteLock)
47 mkStorage :: FilePath -> Repository -> (Page -> IO Document) -> IO Storage
48 mkStorage lsdir repos mkDraft
49 = do chan <- startIndexManager lsdir repos mkDraft
58 getPage :: MonadIO m => Storage -> PageName -> Maybe RevNum -> m (Maybe Page)
59 getPage = ((liftIO .) .) . getPage' . stoRepository
62 putPage :: MonadIO m => Storage -> Maybe String -> Page -> m StatusCode
63 putPage sto userID page
64 = liftIO $ do st <- putPage' (stoRepository sto) userID page
69 deletePage :: MonadIO m => Storage -> Maybe String -> PageName -> m StatusCode
70 deletePage sto userID name
71 = liftIO $ do st <- deletePage' (stoRepository sto) userID name
76 getPageA :: ArrowIO a => Storage -> a (PageName, Maybe RevNum) (Maybe Page)
77 getPageA = arrIO2 . getPage
80 putPageA :: ArrowIO a => Storage -> a (Maybe String, Page) StatusCode
81 putPageA = arrIO2 . putPage
84 deletePageA :: ArrowIO a => Storage -> a (Maybe String, PageName) StatusCode
85 deletePageA = arrIO2 . deletePage
88 getDirContents :: MonadIO m => Storage -> PageName -> Maybe RevNum -> m [PageName]
89 getDirContents = ((liftIO .) .) . getDirContents' . stoRepository
92 getDirContentsA :: ArrowIO a => Storage -> a (PageName, Maybe RevNum) [PageName]
93 getDirContentsA = arrIO2 . getDirContents
96 searchPages :: MonadIO m => Storage -> Condition -> m SearchResult
99 do var <- newEmptyTMVarIO
100 atomically $ writeTChan (stoIndexChan sto) (SearchIndex cond var)
101 atomically $ takeTMVar var
104 rebuildIndex :: MonadIO m => Storage -> m ()
106 = liftIO $ atomically $ writeTChan (stoIndexChan sto) RebuildIndex
109 syncIndex :: Storage -> IO ()
111 = atomically $ writeTChan (stoIndexChan sto) SyncIndex
114 getAttachment :: (Attachment a, MonadIO m) =>
120 getAttachment = (((liftIO .) .) .) . getAttachment' . stoRepository
123 putAttachment :: (Attachment a, MonadIO m) =>
131 putAttachment = (((((liftIO .) .) .) .) .) . putAttachment' . stoRepository