install: proposal
[gargantext.git] / src / Gargantext / Database / NodeNode.hs
index ffc5383433f671285ef461b209f57691d1ed0a1d..d58ed42f73aac396ba46fdbd3c614b7c5c261fdf 100644 (file)
@@ -1,10 +1,25 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE Arrows #-}
+{-|
+Module      : Gargantext.Database.NodeNode
+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.NodeNode where
 
 import Prelude
@@ -22,23 +37,29 @@ data NodeNodePoly node1_id node2_id score
                               , nodeNode_score :: score
                               } deriving (Show)
 
-type NodeNodeWrite = NodeNodePoly (Column PGInt4) (Column PGInt4) (Maybe (Column PGFloat8))
-type NodeNodeRead  = NodeNodePoly (Column PGInt4) (Column PGInt4) (Column PGFloat8)
+type NodeNodeWrite     = NodeNodePoly (Column (Nullable PGInt4)) 
+                                      (Column (PGInt4)) 
+                                      (Column (Nullable PGFloat8))
+
+type NodeNodeRead      = NodeNodePoly (Column (Nullable PGInt4)) 
+                                      (Column (PGInt4)) 
+                                      (Column (Nullable PGFloat8))
 
+type NodeNodeReadNull  = NodeNodePoly (Column (Nullable PGInt4)) 
+                                      (Column (Nullable PGInt4)) 
+                                      (Column (Nullable PGFloat8))
 
 type NodeNode = NodeNodePoly Int Int (Maybe Double)
 
 $(makeAdaptorAndInstance "pNodeNode" ''NodeNodePoly)
 $(makeLensesWith abbreviatedFields   ''NodeNodePoly)
 
-
-nodeNodeTable :: Table NodeNodeWrite NodeNodeRead
+nodeNodeTable :: Table NodeNodeWrite NodeNodeRead 
 nodeNodeTable  = Table "nodes_nodes" (pNodeNode NodeNode { nodeNode_node1_id = required "node1_id"
-                                                           , nodeNode_node2_id = required "node2_id"
-                                                           , nodeNode_score    = optional "score"
-                                                           }
-                                       )
-
+                                         , nodeNode_node2_id = required "node2_id"
+                                         , nodeNode_score    = required "score"
+                                     }
+                                     )
 
 queryNodeNodeTable :: Query NodeNodeRead
 queryNodeNodeTable = queryTable nodeNodeTable
@@ -48,5 +69,10 @@ queryNodeNodeTable = queryTable nodeNodeTable
 nodeNodes :: PGS.Connection -> IO [NodeNode]
 nodeNodes conn = runQuery conn queryNodeNodeTable
 
+instance QueryRunnerColumnDefault (Nullable PGInt4) Int where
+    queryRunnerColumnDefault = fieldQueryRunnerColumn
+
 instance QueryRunnerColumnDefault PGFloat8 (Maybe Double) where
     queryRunnerColumnDefault = fieldQueryRunnerColumn
+
+