2 Module : Gargantext.Database.Schema.NodeNodeNgrams
3 Description : TODO: remove this module and table in database
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
12 {-# OPTIONS_GHC -fno-warn-orphans #-}
14 {-# LANGUAGE Arrows #-}
15 {-# LANGUAGE FlexibleContexts #-}
16 {-# LANGUAGE FlexibleInstances #-}
17 {-# LANGUAGE FunctionalDependencies #-}
18 {-# LANGUAGE MultiParamTypeClasses #-}
19 {-# LANGUAGE NoImplicitPrelude #-}
20 {-# LANGUAGE RankNTypes #-}
21 {-# LANGUAGE TemplateHaskell #-}
23 module Gargantext.Database.Schema.NodeNodeNgrams
27 import Data.Profunctor.Product.TH (makeAdaptorAndInstance)
28 import Control.Lens.TH (makeLenses)
29 import Gargantext.Database.Admin.Utils (Cmd, mkCmd)
30 import Gargantext.Database.Schema.Ngrams (NgramsTypeId, pgNgramsTypeId, NgramsId)
31 import Gargantext.Database.Admin.Types.Node (pgNodeId)
32 import Gargantext.Database.Admin.Types.Node
35 data NodeNodeNgramsPoly n1 n2 ngrams_id ngt w
36 = NodeNodeNgrams { _nnng_node1_id :: n1
37 , _nnng_node2_id :: n2
38 , _nnng_ngrams_id :: ngrams_id
39 , _nnng_ngramsType :: ngt
43 type NodeNodeNgramsWrite =
44 NodeNodeNgramsPoly (Column PGInt4 )
50 type NodeNodeNgramsRead =
51 NodeNodeNgramsPoly (Column PGInt4 )
57 type NodeNodeNgramsReadNull =
58 NodeNodeNgramsPoly (Column (Nullable PGInt4 ))
59 (Column (Nullable PGInt4 ))
60 (Column (Nullable PGInt4 ))
61 (Column (Nullable PGInt4 ))
62 (Column (Nullable PGFloat8))
65 NodeNodeNgramsPoly CorpusId DocId NgramsId NgramsTypeId Double
67 $(makeAdaptorAndInstance "pNodeNodeNgrams" ''NodeNodeNgramsPoly)
68 makeLenses ''NodeNodeNgramsPoly
71 nodeNodeNgramsTable :: Table NodeNodeNgramsWrite NodeNodeNgramsRead
72 nodeNodeNgramsTable = Table "node_node_ngrams"
73 ( pNodeNodeNgrams NodeNodeNgrams
74 { _nnng_node1_id = required "node1_id"
75 , _nnng_node2_id = required "node2_id"
76 , _nnng_ngrams_id = required "ngrams_id"
77 , _nnng_ngramsType = required "ngrams_type"
78 , _nnng_weight = required "weight"
82 ------------------------------------------------
84 queryNodeNodeNgramsTable :: Query NodeNodeNgramsRead
85 queryNodeNodeNgramsTable = queryTable nodeNodeNgramsTable
88 insertNodeNodeNgrams :: [NodeNodeNgrams] -> Cmd err Int
89 insertNodeNodeNgrams = insertNodeNodeNgramsW
90 . map (\(NodeNodeNgrams n1 n2 ng nt w) ->
91 NodeNodeNgrams (pgNodeId n1)
98 insertNodeNodeNgramsW :: [NodeNodeNgramsWrite] -> Cmd err Int
99 insertNodeNodeNgramsW nnnw =
100 mkCmd $ \c -> fromIntegral <$> runInsert_ c insertNothing
102 insertNothing = (Insert { iTable = nodeNodeNgramsTable
104 , iReturning = rCount
105 , iOnConflict = (Just DoNothing)