]> gitweb @ CieloNegro.org - Rakka.git/blob - Rakka/Storage/Types.hs
improvements related to page search
[Rakka.git] / Rakka / Storage / Types.hs
1 module Rakka.Storage.Types
2     ( Storage(..)
3     , IndexReq(..)
4     , SearchResult(..)
5     , HitPage(..)
6     , SnippetFragment(..)
7     )
8     where
9
10 import           Control.Concurrent.STM
11 import           Rakka.Page
12 import           Subversion.Repository
13 import           Subversion.Types
14 import           Text.HyperEstraier hiding (WriteLock)
15
16
17 data Storage
18     = Storage {
19         stoRepository :: !Repository
20       , stoIndexChan  :: !(TChan IndexReq)
21       }
22
23
24 data IndexReq
25     = RebuildIndex
26     | SyncIndex
27     | SearchIndex !Condition !(TMVar SearchResult)
28
29
30 data SearchResult
31     = SearchResult {
32         srTotal :: !Int
33       , srPages :: ![HitPage]
34       }
35     deriving (Show, Eq)
36
37
38 data HitPage
39     = HitPage {
40         hpPageName :: !PageName
41       , hpPageRev  :: !RevNum
42       , hpSnippet  :: [SnippetFragment]
43       }
44     deriving (Show, Eq)
45
46
47 data SnippetFragment
48     = Boundary
49     | NormalText      !String
50     | HighlightedWord !String
51     deriving (Show, Eq)