X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FStorage%2FTypes.hs;h=75d8ef158ba8c76481ae96efc8ef01166d84a311;hb=42f51754dea02201aececaacbf194d714cd58aaf;hp=2944f287038ba81ee45389694bcfc8901ba73b56;hpb=e751af5e3d23d7757f363bf4e86f9d732d90be7f;p=Rakka.git diff --git a/Rakka/Storage/Types.hs b/Rakka/Storage/Types.hs index 2944f28..75d8ef1 100644 --- a/Rakka/Storage/Types.hs +++ b/Rakka/Storage/Types.hs @@ -1,17 +1,21 @@ +{-# 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 { @@ -19,23 +23,30 @@ data 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)