]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Core/Flow.hs
Merge branch 'dev' into stable
[gargantext.git] / src / Gargantext / Core / Flow.hs
1 {-|
2 Module : Gargantext.Core.Flow
3 Description : Core Flow main Types
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
8 Portability : POSIX
9
10 -}
11
12 {-# LANGUAGE ConstraintKinds #-}
13 {-# LANGUAGE RankNTypes #-}
14 {-# LANGUAGE ConstrainedClassMethods #-}
15
16 module Gargantext.Core.Flow where
17
18 import Control.Lens (Lens')
19 import Data.Map (Map)
20 import Data.Text (Text)
21 import Gargantext.Text.Terms (TermType)
22 import Gargantext.Core (Lang)
23 import Gargantext.Database.Schema.Ngrams (Ngrams, NgramsType)
24 import Gargantext.Core.Types.Main (HashId)
25 import Gargantext.Database.Types.Node -- (HyperdataDocument(..))
26 import Gargantext.Database.Node.Contact -- (HyperdataContact(..))
27 import Gargantext.Database.Node.Document.Insert (AddUniqId, InsertDb)
28 import Gargantext.Database.Utils (Cmd)
29
30 type FlowCorpus a = ( AddUniqId a
31 , UniqId a
32 , InsertDb a
33 , ExtractNgramsT a
34 , HasText a
35 )
36
37 class UniqId a
38 where
39 uniqId :: Lens' a (Maybe HashId)
40
41 class ExtractNgramsT h
42 where
43 extractNgramsT :: HasText h => TermType Lang -> h -> Cmd err (Map Ngrams (Map NgramsType Int))
44
45 class HasText h
46 where
47 hasText :: h -> [Text]
48
49 instance UniqId HyperdataDocument
50 where
51 uniqId = hyperdataDocument_uniqId
52
53 instance UniqId HyperdataContact
54 where
55 uniqId = hc_uniqId
56