module Rakka.Storage.Types ( Storage(..) , IndexReq(..) , SearchResult(..) , SnippetFragment(..) ) where import Control.Concurrent.STM import Rakka.Page import Subversion.Repository import Subversion.Types import Text.HyperEstraier hiding (WriteLock) data Storage = Storage { stoRepository :: !Repository , stoIndexChan :: !(TChan IndexReq) } data IndexReq = RebuildIndex | SyncIndex | SearchIndex !Condition !(TMVar [SearchResult]) data SearchResult = SearchResult { srPageName :: !PageName , srPageRev :: !RevNum , srSnippet :: [SnippetFragment] } deriving (Show, Eq) data SnippetFragment = NormalText !String | HighlightedWord !String deriving (Show, Eq)