]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Storage/Impl.hs
implemented things related to attachment
[Rakka.git] / Rakka / Storage / Impl.hs
index 2073155c039436d0c5c74eee1197913902e6729e..fed687f3c1266e992efc7973838cf8f41ced0ffb 100644 (file)
@@ -2,7 +2,11 @@ module Rakka.Storage.Impl
     ( getPage'
     , putPage'
     , deletePage'
+    , getDirContents'
     , startIndexManager
+
+    , getAttachment'
+    , putAttachment'
     )
     where
 
@@ -14,6 +18,7 @@ import           Data.Set (Set)
 import qualified Data.Set as S
 import           Network.HTTP.Lucu
 import           Network.URI
+import           Rakka.Attachment
 import           Rakka.Page
 import           Rakka.Storage.DefaultPage
 import           Rakka.Storage.Repos
@@ -63,11 +68,38 @@ findChangedPages repos oldRev newRev
       return . S.unions
 
 
+getDirContents' :: Repository -> PageName -> Maybe RevNum -> IO [PageName]
+getDirContents' repos name rev
+    = do reposPages   <- getDirContentsInRevision repos name rev
+         defaultPages <- getDefaultDirContents name
+         return $ S.toList (reposPages `S.union` defaultPages)
+
+
 getCurrentRevNum :: Repository -> IO RevNum
 getCurrentRevNum repos
     = getRepositoryFS repos >>= getYoungestRev
 
 
+getAttachment' :: Attachment a =>
+                  Repository
+               -> PageName
+               -> String
+               -> Maybe RevNum
+               -> IO (Maybe a)
+getAttachment' = loadAttachmentInRepository
+
+
+putAttachment' :: Attachment a =>
+                  Repository
+               -> Maybe String
+               -> Maybe RevNum
+               -> PageName
+               -> String
+               -> a
+               -> IO StatusCode
+putAttachment' = putAttachmentIntoRepository
+
+
 startIndexManager :: FilePath -> Repository -> (Page -> IO Document) -> IO (TChan IndexReq)
 startIndexManager lsdir repos mkDraft
     = do chan  <- newTChanIO
@@ -123,8 +155,11 @@ openIndex indexDir revFile
                               $ removeFile revFile
 
                      Right index <- openDatabase indexDir (Writer [Create []])
+                     addAttrIndex index "@type"          StrIndex
                      addAttrIndex index "@uri"           SeqIndex
                      addAttrIndex index "rakka:revision" SeqIndex
+                     addAttrIndex index "rakka:isTheme"  StrIndex
+                     addAttrIndex index "rakka:isFeed"   StrIndex
                      noticeM logger ("Created an H.E. index on " ++ indexDir)
 
                      return index