]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Resource/Search.hs
improvements related to page search
[Rakka.git] / Rakka / Resource / Search.hs
index a7e7628918732f050a5759aa99e339ef261b001a..af90bfa3844395a6d70392767a07c7fe130c36c1 100644 (file)
@@ -41,6 +41,10 @@ resSearch env
       }
 
 
+defaultResultsPerPage :: Int
+defaultResultsPerPage = 20
+
+
 {-
   <searchResult query="foo bar baz"
                 from="0"
@@ -59,13 +63,15 @@ handleSearch env
     = do params <- getQueryForm
 
          let query = UTF8.decodeString $ fromMaybe ""  $ lookup "q" params
-             from  = read $ fromMaybe "0"  $ lookup "from" params
-             to    = read $ fromMaybe "20" $ lookup "to"   params
+             from  = fromMaybe 0
+                     $ fmap read $ lookup "from" params
+             to    = fromMaybe defaultResultsPerPage
+                     $ fmap read $ lookup "to"   params
 
          cond   <- liftIO $ mkCond query from to
          result <- searchPages (envStorage env) cond
 
-         let to' = min (from + length result) to
+         let to' = min (from + length (srPages result)) to
 
          runIdempotentA $ proc ()
              -> do tree <- ( eelem "/"
@@ -73,8 +79,8 @@ handleSearch env
                                   += sattr "query" query
                                   += sattr "from"  (show from)
                                   += sattr "to"    (show to')
-                                  += sattr "total" (show $ length result)
-                                  += ( constL result
+                                  += sattr "total" (show $ srTotal result)
+                                  += ( constL (srPages result)
                                        >>>
                                        mkPageElem
                                      )
@@ -90,10 +96,10 @@ handleSearch env
                setMax    cond (to - from)
                return cond
 
-      mkPageElem :: ArrowXml a => a SearchResult XmlTree
+      mkPageElem :: ArrowXml a => a HitPage XmlTree
       mkPageElem = ( eelem "page"
-                     += attr "name" (arr srPageName >>> mkText)
-                     += ( arrL srSnippet
+                     += attr "name" (arr hpPageName >>> mkText)
+                     += ( arrL hpSnippet
                           >>>
                           mkSnippetTree
                         )