]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Storage/Impl.hs
implemented page deleting
[Rakka.git] / Rakka / Storage / Impl.hs
index 5db3f9257b0297e2d99d0e6c38677db7fdebd46f..2c36f516c2a012dfe64189ca3adaca0fa5da924c 100644 (file)
@@ -1,5 +1,7 @@
 module Rakka.Storage.Impl
     ( getPage'
+    , putPage'
+    , deletePage'
     , startIndexManager
     )
     where
@@ -11,11 +13,15 @@ import           Control.Monad
 import           Data.Maybe
 import           Data.Set (Set)
 import qualified Data.Set as S
+import           Network.HTTP.Lucu
 import           Network.URI
 import           Rakka.Page
 import           Rakka.Storage.DefaultPage
+import           Rakka.Storage.Repos
 import           Rakka.Storage.Types
 import           Subversion.Types
+import           Subversion.FileSystem
+import           Subversion.Repository
 import           System.Directory
 import           System.FilePath
 import           System.IO
@@ -23,28 +29,42 @@ import           System.Log.Logger
 import           System.Posix.Files
 import           System.Posix.Types
 import           System.Posix.IO
-import           Subversion.FileSystem
-import           Subversion.Repository
 import           Text.HyperEstraier hiding (WriteLock)
 
+
+logger :: String
 logger = "Rakka.Storage"
 
 
 getPage' :: Repository -> PageName -> Maybe RevNum -> IO (Maybe Page)
 getPage' repos name rev
-    = loadDefaultPage name -- FIXME
+    = do page <- loadPageInRepository repos name rev
+         case page of
+           Nothing -> loadDefaultPage name
+           p       -> return p
+
+
+putPage' :: Repository -> Page -> IO StatusCode
+putPage' = putPageIntoRepository
+
+
+deletePage' :: Repository -> PageName -> IO StatusCode
+deletePage' = deletePageFromRepository
 
 
 findAllPages :: Repository -> RevNum -> IO (Set PageName)
 findAllPages _     0   = findAllDefaultPages
-findAllPages repos rev
-    = findAllDefaultPages -- FIXME
+findAllPages repos rev = do reposPages   <- findAllPagesInRevision repos rev
+                            defaultPages <- findAllDefaultPages
+                            return (reposPages `S.union` defaultPages)
 
 
 findChangedPages :: Repository -> RevNum -> RevNum -> IO (Set PageName)
 findChangedPages repos 0      newRev = findAllPages repos newRev
 findChangedPages repos oldRev newRev
-    = fail "FIXME: not impl"
+    = mapM (findChangedPagesAtRevision repos) [oldRev + 1 .. newRev]
+      >>=
+      return . S.unions
 
 
 getCurrentRevNum :: Repository -> IO RevNum