Commit 96dfa394 authored by Alexandre Delanoë's avatar Alexandre Delanoë

[DB] refactoring

parent 0445a8f9
Pipeline #832 canceled with stage
...@@ -46,7 +46,8 @@ import Gargantext.Core.Types.Individu (User(..), Username, Password, arbitraryUs ...@@ -46,7 +46,8 @@ import Gargantext.Core.Types.Individu (User(..), Username, Password, arbitraryUs
import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger) import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger)
import Gargantext.Database.Action.Query.Tree (isDescendantOf, isIn) import Gargantext.Database.Action.Query.Tree (isDescendantOf, isIn)
import Gargantext.Database.Action.Query.Tree.Root (getRoot) import Gargantext.Database.Action.Query.Tree.Root (getRoot)
import Gargantext.Database.Admin.Types.Node (NodePoly(_node_id), NodeId(..), UserId, ListId, DocId) import Gargantext.Database.Schema.Node (NodePoly(_node_id))
import Gargantext.Database.Admin.Types.Node (NodeId(..), UserId, ListId, DocId)
import Gargantext.Database.Admin.Utils (Cmd', CmdM, HasConnectionPool) import Gargantext.Database.Admin.Utils (Cmd', CmdM, HasConnectionPool)
import Gargantext.Prelude hiding (reverse) import Gargantext.Prelude hiding (reverse)
import Servant import Servant
......
...@@ -44,6 +44,7 @@ import Gargantext.Database.Admin.Config (userMaster) ...@@ -44,6 +44,7 @@ import Gargantext.Database.Admin.Config (userMaster)
import Gargantext.Database.Admin.Types.Errors (HasNodeError) import Gargantext.Database.Admin.Types.Errors (HasNodeError)
import Gargantext.Database.Admin.Types.Node (Node, HyperdataDocument(..), NodeId, ListId, CorpusId) import Gargantext.Database.Admin.Types.Node (Node, HyperdataDocument(..), NodeId, ListId, CorpusId)
import Gargantext.Database.Admin.Utils (Cmd) import Gargantext.Database.Admin.Utils (Cmd)
import Gargantext.Database.Schema.Node (_node_id, _node_hyperdata)
import Gargantext.Database.Schema.Ngrams (NgramsType(..)) import Gargantext.Database.Schema.Ngrams (NgramsType(..))
import Gargantext.Database.Schema.NodeNode (selectDocNodes) import Gargantext.Database.Schema.NodeNode (selectDocNodes)
import Gargantext.Prelude import Gargantext.Prelude
......
...@@ -65,6 +65,7 @@ import Gargantext.Database.Admin.Config (nodeTypeId) ...@@ -65,6 +65,7 @@ import Gargantext.Database.Admin.Config (nodeTypeId)
import Gargantext.Database.Admin.Types.Errors (HasNodeError(..)) import Gargantext.Database.Admin.Types.Errors (HasNodeError(..))
import Gargantext.Database.Admin.Types.Node import Gargantext.Database.Admin.Types.Node
import Gargantext.Database.Admin.Utils -- (Cmd, CmdM) import Gargantext.Database.Admin.Utils -- (Cmd, CmdM)
import Gargantext.Database.Schema.Node (node_userId, _node_typename)
import Gargantext.Database.Schema.NodeNode import Gargantext.Database.Schema.NodeNode
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.Viz.Chart import Gargantext.Viz.Chart
......
...@@ -23,8 +23,7 @@ module Gargantext.Core.Types ( module Gargantext.Core.Types.Main ...@@ -23,8 +23,7 @@ module Gargantext.Core.Types ( module Gargantext.Core.Types.Main
, Label, Stems , Label, Stems
, HasInvalidError(..), assertValid , HasInvalidError(..), assertValid
, Name , Name
, TableResult(..) , TableResult(..), NodeTableResult
, NodeTableResult
, Ordering(..) , Ordering(..)
, TODO(..) , TODO(..)
) where ) where
...@@ -42,8 +41,8 @@ import Data.Text (Text, unpack) ...@@ -42,8 +41,8 @@ import Data.Text (Text, unpack)
import Data.Validity import Data.Validity
import GHC.Generics import GHC.Generics
import Gargantext.Core.Types.Main import Gargantext.Core.Types.Main
import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger)
import Gargantext.Database.Admin.Types.Node import Gargantext.Database.Admin.Types.Node
import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger)
import Gargantext.Prelude import Gargantext.Prelude
import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary) import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)
...@@ -143,6 +142,9 @@ assertValid v = when (not $ validationIsValid v) $ throwError $ _InvalidError # ...@@ -143,6 +142,9 @@ assertValid v = when (not $ validationIsValid v) $ throwError $ _InvalidError #
-- assertValid :: MonadBase IO m => Validation -> m () -- assertValid :: MonadBase IO m => Validation -> m ()
-- assertValid v = when (not $ validationIsValid v) $ fail $ show v -- assertValid v = when (not $ validationIsValid v) $ fail $ show v
-- | NodeTableResult (Table computations)
type NodeTableResult a = TableResult (Node a)
data TableResult a = TableResult { tr_count :: Int data TableResult a = TableResult { tr_count :: Int
, tr_docs :: [a] , tr_docs :: [a]
...@@ -156,7 +158,6 @@ instance ToSchema a => ToSchema (TableResult a) where ...@@ -156,7 +158,6 @@ instance ToSchema a => ToSchema (TableResult a) where
instance Arbitrary a => Arbitrary (TableResult a) where instance Arbitrary a => Arbitrary (TableResult a) where
arbitrary = TableResult <$> arbitrary <*> arbitrary arbitrary = TableResult <$> arbitrary <*> arbitrary
type NodeTableResult a = TableResult (Node a)
-- TO BE removed -- TO BE removed
data TODO = TODO data TODO = TODO
......
...@@ -25,6 +25,7 @@ import Gargantext.Database.Admin.Types.Errors ...@@ -25,6 +25,7 @@ import Gargantext.Database.Admin.Types.Errors
import Gargantext.Database.Admin.Types.Node import Gargantext.Database.Admin.Types.Node
import Gargantext.Database.Admin.Utils (Cmd) import Gargantext.Database.Admin.Utils (Cmd)
import Gargantext.Database.Schema.Ngrams import Gargantext.Database.Schema.Ngrams
import Gargantext.Database.Schema.Node
import Gargantext.Database.Schema.User import Gargantext.Database.Schema.User
import Gargantext.Database.Schema.NodeNodeNgrams import Gargantext.Database.Schema.NodeNodeNgrams
import Gargantext.Prelude import Gargantext.Prelude
......
...@@ -29,7 +29,7 @@ import Data.Time (UTCTime) ...@@ -29,7 +29,7 @@ import Data.Time (UTCTime)
import Database.PostgreSQL.Simple.FromField (FromField, fromField) import Database.PostgreSQL.Simple.FromField (FromField, fromField)
import GHC.Generics (Generic) import GHC.Generics (Generic)
import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger) import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger)
import Gargantext.Database.Admin.Types.Node (Node,Hyperdata) import Gargantext.Database.Admin.Types.Node (Hyperdata, Node)
import Gargantext.Database.Admin.Utils (fromField') import Gargantext.Database.Admin.Utils (fromField')
import Gargantext.Prelude import Gargantext.Prelude
import Opaleye (QueryRunnerColumnDefault, queryRunnerColumnDefault, PGJsonb, fieldQueryRunnerColumn) import Opaleye (QueryRunnerColumnDefault, queryRunnerColumnDefault, PGJsonb, fieldQueryRunnerColumn)
......
...@@ -37,12 +37,12 @@ import Gargantext.Database.Admin.Types.Node ...@@ -37,12 +37,12 @@ import Gargantext.Database.Admin.Types.Node
import Gargantext.Database.Action.Query.Node import Gargantext.Database.Action.Query.Node
import Gargantext.Database.Action.Query.Node.User (HyperdataUser) import Gargantext.Database.Action.Query.Node.User (HyperdataUser)
import Gargantext.Database.Action.Flow.Utils (getUserId) import Gargantext.Database.Action.Flow.Utils (getUserId)
import Gargantext.Database.Schema.Node (NodeRead) import Gargantext.Database.Schema.Node (NodePoly(..), NodeRead)
import Gargantext.Database.Schema.Node (queryNodeTable) import Gargantext.Database.Schema.Node (queryNodeTable)
import Gargantext.Database.Action.Query import Gargantext.Database.Action.Query
import Gargantext.Database.Schema.User (UserPoly(..)) import Gargantext.Database.Schema.User (UserPoly(..))
import Gargantext.Database.Action.Query.User (queryUserTable) import Gargantext.Database.Action.Query.User (queryUserTable)
import Gargantext.Database.Admin.Types.Node (Node, NodePoly(..), NodeType(NodeUser), pgNodeId) import Gargantext.Database.Admin.Types.Node (Node, NodeType(NodeUser), pgNodeId)
import Gargantext.Database.Admin.Utils (Cmd, runOpaQuery) import Gargantext.Database.Admin.Utils (Cmd, runOpaQuery)
import Gargantext.Prelude import Gargantext.Prelude
import Opaleye (restrict, (.==), Query) import Opaleye (restrict, (.==), Query)
......
This diff is collapsed.
...@@ -26,25 +26,43 @@ Portability : POSIX ...@@ -26,25 +26,43 @@ Portability : POSIX
module Gargantext.Database.Schema.Node where module Gargantext.Database.Schema.Node where
import Control.Lens hiding (elements, (&))
import Control.Lens.TH (makeLensesWith, abbreviatedFields) import Control.Lens.TH (makeLensesWith, abbreviatedFields)
import Data.Aeson.TH (deriveJSON)
import Data.Maybe (Maybe(..)) import Data.Maybe (Maybe(..))
import Data.Profunctor.Product.TH (makeAdaptorAndInstance) import Data.Profunctor.Product.TH (makeAdaptorAndInstance)
import Data.Swagger hiding (required)
import Data.Text (Text) import Data.Text (Text)
import Database.PostgreSQL.Simple.FromField (FromField, fromField) import Database.PostgreSQL.Simple.FromField (FromField, fromField)
import Gargantext.Core.Types import GHC.Generics (Generic)
import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger)
import Gargantext.Database.Admin.Utils import Gargantext.Database.Admin.Utils
import Gargantext.Viz.Graph (HyperdataGraph(..))
import Opaleye hiding (FromField) import Opaleye hiding (FromField)
import Opaleye.Internal.QueryArr (Query) import Opaleye.Internal.QueryArr (Query)
import Prelude hiding (null, id, map, sum) import Prelude hiding (null, id, map, sum)
import Test.QuickCheck.Arbitrary
------------------------------------------------------------------------ ------------------------------------------------------------------------
data NodePoly id typename userId
parentId name date
hyperdata = Node { _node_id :: id
, _node_typename :: typename
$(makeAdaptorAndInstance "pNode" ''NodePoly) , _node_userId :: userId
$(makeLensesWith abbreviatedFields ''NodePoly) , _node_parentId :: parentId
$(makeAdaptorAndInstance "pNodeSearch" ''NodePolySearch) , _node_name :: name
$(makeLensesWith abbreviatedFields ''NodePolySearch) , _node_date :: date
, _node_hyperdata :: hyperdata
} deriving (Show, Generic)
$(deriveJSON (unPrefix "_node_") ''NodePoly)
$(makeLenses ''NodePoly)
$(makeAdaptorAndInstance "pNode" ''NodePoly)
$(makeLensesWith abbreviatedFields ''NodePoly)
------------------------------------------------------------------------ ------------------------------------------------------------------------
nodeTable :: Table NodeWrite NodeRead nodeTable :: Table NodeWrite NodeRead
...@@ -91,21 +109,6 @@ type NodeReadNull = NodePoly (Column (Nullable PGInt4)) ...@@ -91,21 +109,6 @@ type NodeReadNull = NodePoly (Column (Nullable PGInt4))
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- | Node(Read|Write)Search is slower than Node(Write|Read) use it -- | Node(Read|Write)Search is slower than Node(Write|Read) use it
-- for full text search only -- for full text search only
nodeTableSearch :: Table NodeSearchWrite NodeSearchRead
nodeTableSearch = Table "nodes" (pNodeSearch NodeSearch { _ns_id = optional "id"
, _ns_typename = required "typename"
, _ns_userId = required "user_id"
, _ns_parentId = required "parent_id"
, _ns_name = required "name"
, _ns_date = optional "date"
, _ns_hyperdata = required "hyperdata"
, _ns_search = optional "search"
}
)
type NodeSearchWrite = type NodeSearchWrite =
NodePolySearch NodePolySearch
...@@ -140,110 +143,37 @@ type NodeSearchReadNull = ...@@ -140,110 +143,37 @@ type NodeSearchReadNull =
(Column (Nullable PGJsonb) ) (Column (Nullable PGJsonb) )
(Column (Nullable PGTSVector) ) (Column (Nullable PGTSVector) )
------------------------------------------------------------------------
------------------------------------------------------------------------
-- Instances
------------------------------------------------------------------------
instance FromField HyperdataAny where
fromField = fromField'
instance FromField HyperdataCorpus
where
fromField = fromField'
instance FromField HyperdataDocument
where
fromField = fromField'
instance FromField HyperdataDocumentV3
where
fromField = fromField'
instance FromField HyperData
where
fromField = fromField'
instance FromField HyperdataListModel data NodePolySearch id typename userId
where parentId name date
fromField = fromField' hyperdata search = NodeSearch { _ns_id :: id
, _ns_typename :: typename
, _ns_userId :: userId
-- , nodeUniqId :: shaId
, _ns_parentId :: parentId
, _ns_name :: name
, _ns_date :: date
instance FromField HyperdataGraph , _ns_hyperdata :: hyperdata
where , _ns_search :: search
fromField = fromField' } deriving (Show, Generic)
instance FromField HyperdataPhylo $(makeAdaptorAndInstance "pNodeSearch" ''NodePolySearch)
where $(makeLensesWith abbreviatedFields ''NodePolySearch)
fromField = fromField' $(deriveJSON (unPrefix "_ns_") ''NodePolySearch)
$(makeLenses ''NodePolySearch)
instance FromField HyperdataAnnuaire nodeTableSearch :: Table NodeSearchWrite NodeSearchRead
where nodeTableSearch = Table "nodes" (pNodeSearch NodeSearch { _ns_id = optional "id"
fromField = fromField' , _ns_typename = required "typename"
, _ns_userId = required "user_id"
instance FromField HyperdataList , _ns_parentId = required "parent_id"
where , _ns_name = required "name"
fromField = fromField' , _ns_date = optional "date"
instance FromField (NodeId, Text) , _ns_hyperdata = required "hyperdata"
where , _ns_search = optional "search"
fromField = fromField' }
)
------------------------------------------------------------------------ ------------------------------------------------------------------------
instance QueryRunnerColumnDefault PGJsonb HyperdataAny
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGJsonb HyperdataList
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGJsonb HyperData
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGJsonb HyperdataDocument
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGJsonb HyperdataDocumentV3
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGJsonb HyperdataCorpus
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGJsonb HyperdataListModel
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGJsonb HyperdataGraph
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGJsonb HyperdataPhylo
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGJsonb HyperdataAnnuaire
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGTSVector (Maybe TSVector)
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGInt4 (Maybe NodeId)
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGInt4 NodeId
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault (Nullable PGInt4) NodeId
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
...@@ -29,6 +29,7 @@ import Gargantext.Database.Admin.Config ...@@ -29,6 +29,7 @@ import Gargantext.Database.Admin.Config
import Gargantext.Database.Admin.Types.Node (CorpusId) import Gargantext.Database.Admin.Types.Node (CorpusId)
import Gargantext.Database.Admin.Utils import Gargantext.Database.Admin.Utils
import Gargantext.Database.Schema.NodeNode (selectDocsDates) import Gargantext.Database.Schema.NodeNode (selectDocsDates)
import Gargantext.Database.Schema.Node
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.Text.Metrics.Count (occurrencesWith) import Gargantext.Text.Metrics.Count (occurrencesWith)
......
...@@ -10,10 +10,12 @@ Portability : POSIX ...@@ -10,10 +10,12 @@ Portability : POSIX
-} -}
{-# OPTIONS_GHC -fno-warn-orphans #-} {-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}
module Gargantext.Viz.Graph module Gargantext.Viz.Graph
where where
...@@ -30,6 +32,9 @@ import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger) ...@@ -30,6 +32,9 @@ import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger)
import Gargantext.Database.Admin.Types.Node (NodeId, Hyperdata) import Gargantext.Database.Admin.Types.Node (NodeId, Hyperdata)
import Gargantext.Prelude import Gargantext.Prelude
import Test.QuickCheck (elements) import Test.QuickCheck (elements)
import Database.PostgreSQL.Simple.FromField (FromField, fromField)
import Gargantext.Database.Admin.Utils (fromField')
import Opaleye (QueryRunnerColumnDefault, queryRunnerColumnDefault, PGJsonb, fieldQueryRunnerColumn)
import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary) import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)
import qualified Data.Aeson as DA import qualified Data.Aeson as DA
import qualified Data.Text as T import qualified Data.Text as T
...@@ -165,6 +170,14 @@ $(deriveJSON (unPrefix "") ''HyperdataGraph) ...@@ -165,6 +170,14 @@ $(deriveJSON (unPrefix "") ''HyperdataGraph)
instance Hyperdata HyperdataGraph instance Hyperdata HyperdataGraph
makeLenses ''HyperdataGraph makeLenses ''HyperdataGraph
instance FromField HyperdataGraph
where
fromField = fromField'
instance QueryRunnerColumnDefault PGJsonb HyperdataGraph
where
queryRunnerColumnDefault = fieldQueryRunnerColumn
----------------------------------------------------------- -----------------------------------------------------------
......
...@@ -46,6 +46,7 @@ import Gargantext.API.Admin.Types ...@@ -46,6 +46,7 @@ import Gargantext.API.Admin.Types
import Gargantext.Core.Types.Main import Gargantext.Core.Types.Main
import Gargantext.Database.Admin.Config import Gargantext.Database.Admin.Config
import Gargantext.Database.Action.Metrics.NgramsByNode (getNodesByNgramsOnlyUser) import Gargantext.Database.Action.Metrics.NgramsByNode (getNodesByNgramsOnlyUser)
import Gargantext.Database.Schema.Node (node_userId, node_parentId, node_hyperdata)
import Gargantext.Database.Schema.Ngrams import Gargantext.Database.Schema.Ngrams
import Gargantext.Database.Action.Query.Node.Select import Gargantext.Database.Action.Query.Node.Select
import Gargantext.Database.Action.Query.Node import Gargantext.Database.Action.Query.Node
......
...@@ -30,6 +30,7 @@ import qualified Data.ByteString as DB ...@@ -30,6 +30,7 @@ import qualified Data.ByteString as DB
import qualified Data.ByteString.Lazy as DBL import qualified Data.ByteString.Lazy as DBL
import Data.Swagger import Data.Swagger
import Gargantext.API.Admin.Types import Gargantext.API.Admin.Types
import Gargantext.Database.Schema.Node (_node_hyperdata)
import Gargantext.Database.Action.Query.Node (insertNodes, nodePhyloW, getNodePhylo) import Gargantext.Database.Action.Query.Node (insertNodes, nodePhyloW, getNodePhylo)
import Gargantext.Database.Admin.Types.Node -- (PhyloId, ListId, CorpusId, UserId, NodeId(..)) import Gargantext.Database.Admin.Types.Node -- (PhyloId, ListId, CorpusId, UserId, NodeId(..))
import Gargantext.Prelude import Gargantext.Prelude
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment