{-| Module : Gargantext.Database.NodeNgramNgram Description : Copyright : (c) CNRS, 2017-Present License : AGPL + CECILL v3 Maintainer : team@gargantext.org Stability : experimental Portability : POSIX Here is a longer description of this module, containing some commentary with @some markup@. -} {-# OPTIONS_GHC -fno-warn-orphans #-} {-# LANGUAGE Arrows #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TemplateHaskell #-} module Gargantext.Database.NodeNgramNgram where import Prelude import Data.Maybe (Maybe) import Data.Profunctor.Product.TH (makeAdaptorAndInstance) import Control.Lens.TH (makeLensesWith, abbreviatedFields) import qualified Database.PostgreSQL.Simple as PGS import Opaleye data NodeNgramNgramPoly node_id ngram1_id ngram2_id weight = NodeNgramNgram { nodeNgramNgram_NodeNgramNgram_NodeId :: node_id , nodeNgramNgram_NodeNgramNgram_Ngram1Id :: ngram1_id , nodeNgramNgram_NodeNgramNgram_Ngram2Id :: ngram2_id , nodeNgramNgram_NodeNgramNgram_Weight :: weight } deriving (Show) type NodeNgramNgramWrite = NodeNgramNgramPoly (Maybe (Column PGInt4 )) (Column PGInt4 ) (Column PGInt4 ) (Maybe (Column PGFloat8)) type NodeNgramNgramRead = NodeNgramNgramPoly (Column PGInt4 ) (Column PGInt4 ) (Column PGInt4 ) (Column PGFloat8) type NodeNgramNgram = NodeNgramNgramPoly (Maybe Int ) Int Int (Maybe Double) $(makeAdaptorAndInstance "pNodeNgramNgram" ''NodeNgramNgramPoly) $(makeLensesWith abbreviatedFields ''NodeNgramNgramPoly) nodeNgramNgramTable :: Table NodeNgramNgramWrite NodeNgramNgramRead nodeNgramNgramTable = Table "nodes_ngrams_ngrams" ( pNodeNgramNgram NodeNgramNgram { nodeNgramNgram_NodeNgramNgram_NodeId = optional "node_id" , nodeNgramNgram_NodeNgramNgram_Ngram1Id = required "ngram1_id" , nodeNgramNgram_NodeNgramNgram_Ngram2Id = required "ngram2_id" , nodeNgramNgram_NodeNgramNgram_Weight = optional "weight" } ) queryNodeNgramNgramTable :: Query NodeNgramNgramRead queryNodeNgramNgramTable = queryTable nodeNgramNgramTable -- | not optimized (get all ngrams without filters) nodeNgramNgrams :: PGS.Connection -> IO [NodeNgramNgram] nodeNgramNgrams conn = runQuery conn queryNodeNgramNgramTable instance QueryRunnerColumnDefault PGInt4 (Maybe Int) where queryRunnerColumnDefault = fieldQueryRunnerColumn instance QueryRunnerColumnDefault PGFloat8 (Maybe Double) where queryRunnerColumnDefault = fieldQueryRunnerColumn