+{-# LANGUAGE
+ UnicodeSyntax
+ #-}
module Rakka.Storage.Types
( Storage(..)
, IndexReq(..)
, SearchResult(..)
+ , HitPage(..)
, SnippetFragment(..)
)
where
-
-import Control.Concurrent.STM
-import Rakka.Page
-import Subversion.Repository
-import Subversion.Types
-import Text.HyperEstraier hiding (WriteLock)
-
+import Control.Concurrent.STM
+import Data.Text (Text)
+import Data.Time
+import Rakka.Page
+import Subversion.Repository
+import Subversion.Types
+import Text.HyperEstraier hiding (WriteLock)
data Storage
= Storage {
, stoIndexChan :: !(TChan IndexReq)
}
-
data IndexReq
= RebuildIndex
| SyncIndex
- | SearchIndex !Condition !(TMVar [SearchResult])
-
+ | SearchIndex !Condition !(TMVar SearchResult)
data SearchResult
= SearchResult {
- srPageName :: !PageName
- , srPageRev :: !RevNum
- , srSnippet :: [SnippetFragment]
+ srTotal :: !Int
+ , srPages :: ![HitPage]
}
deriving (Show, Eq)
+data HitPage
+ = HitPage {
+ hpPageName :: !PageName
+ , hpPageRev :: RevNum
+ , hpLastMod :: UTCTime
+ , hpSummary :: Maybe Text
+ , hpSnippet :: [SnippetFragment]
+ }
+ deriving (Show, Eq)
data SnippetFragment
- = NormalText !String
- | HighlightedWord !String
- deriving (Show, Eq)
\ No newline at end of file
+ = Boundary
+ | NormalText !Text
+ | HighlightedWord !Text
+ deriving (Show, Eq)