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