]> gitweb @ CieloNegro.org - Rakka.git/blob - Rakka/Storage/Types.hs
HitPage should contain more info
[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           Data.Time
12 import           Rakka.Page
13 import           Subversion.Repository
14 import           Subversion.Types
15 import           Text.HyperEstraier hiding (WriteLock)
16
17
18 data Storage
19     = Storage {
20         stoRepository :: !Repository
21       , stoIndexChan  :: !(TChan IndexReq)
22       }
23
24
25 data IndexReq
26     = RebuildIndex
27     | SyncIndex
28     | SearchIndex !Condition !(TMVar SearchResult)
29
30
31 data SearchResult
32     = SearchResult {
33         srTotal :: !Int
34       , srPages :: ![HitPage]
35       }
36     deriving (Show, Eq)
37
38
39 data HitPage
40     = HitPage {
41         hpPageName :: !PageName
42       , hpPageRev  :: RevNum
43       , hpLastMod  :: UTCTime
44       , hpSummary  :: Maybe String
45       , hpSnippet  :: [SnippetFragment]
46       }
47     deriving (Show, Eq)
48
49
50 data SnippetFragment
51     = Boundary
52     | NormalText      !String
53     | HighlightedWord !String
54     deriving (Show, Eq)