]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Storage/Impl.hs
HitPage should contain more info
[Rakka.git] / Rakka / Storage / Impl.hs
index c9c2de2858320725b75c30396e54e179bcc6b3da..442c412fb4966f906598155227c115dec48e75e2 100644 (file)
@@ -16,6 +16,7 @@ import           Control.Monad
 import           Data.Maybe
 import           Data.Set (Set)
 import qualified Data.Set as S
+import           Data.Time
 import           Network.HTTP.Lucu
 import           Network.HTTP.Lucu.Utils
 import           Network.URI
@@ -25,6 +26,7 @@ import           Rakka.Page
 import           Rakka.Storage.DefaultPage
 import           Rakka.Storage.Repos
 import           Rakka.Storage.Types
+import           Rakka.W3CDateTime
 import           Subversion.Types
 import           Subversion.FileSystem
 import           Subversion.Repository
@@ -158,6 +160,7 @@ openIndex indexDir revFile
                               $ removeFile revFile
 
                      Right index <- openDatabase indexDir (Writer [Create []])
+                     addAttrIndex index "@mdate"         SeqIndex
                      addAttrIndex index "@type"          StrIndex
                      addAttrIndex index "@uri"           SeqIndex
                      addAttrIndex index "rakka:revision" SeqIndex
@@ -206,8 +209,16 @@ searchIndex index cond
       fromId :: [String] -> DocumentID -> IO HitPage
       fromId words docId
           = do uri     <- getDocURI index docId
-               rev     <- getDocAttr index docId "rakka:revision"
-                          >>= return . read . fromJust
+               rev     <- unsafeInterleaveIO $
+                          getDocAttr index docId "rakka:revision"
+                          >>=
+                          return . read . fromJust
+               lastMod <- unsafeInterleaveIO $
+                          getDocAttr index docId "@mdate"
+                          >>=
+                          return . zonedTimeToUTC . fromJust . parseW3CDateTime . fromJust
+               summary <- unsafeInterleaveIO $
+                          getDocAttr index docId "rakka:summary"
                snippet <- unsafeInterleaveIO $
                           do doc <- getDocument index docId [NoAttributes, NoKeywords]
                              sn  <- makeSnippet doc words 300 80 80
@@ -215,6 +226,8 @@ searchIndex index cond
                return HitPage {
                             hpPageName = decodePageName $ uriPath uri
                           , hpPageRev  = rev
+                          , hpLastMod  = lastMod
+                          , hpSummary  = summary
                           , hpSnippet  = snippet
                           }