Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Christian Merten
haskell-gargantext
Commits
942a2832
Commit
942a2832
authored
Apr 11, 2020
by
Alexandre Delanoë
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[WIP/DB] Refactoring (start).
parent
b7355306
Changes
43
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
43 changed files
with
349 additions
and
362 deletions
+349
-362
Flow.hs
src/Gargantext/Database/Action/Flow.hs
+1
-1
Annuaire.hs
src/Gargantext/Database/Action/Flow/Annuaire.hs
+1
-2
List.hs
src/Gargantext/Database/Action/Flow/List.hs
+1
-1
Pairing.hs
src/Gargantext/Database/Action/Flow/Pairing.hs
+1
-1
Types.hs
src/Gargantext/Database/Action/Flow/Types.hs
+1
-1
Utils.hs
src/Gargantext/Database/Action/Flow/Utils.hs
+1
-1
Learn.hs
src/Gargantext/Database/Action/Learn.hs
+2
-1
Metrics.hs
src/Gargantext/Database/Action/Metrics.hs
+1
-1
Lists.hs
src/Gargantext/Database/Action/Metrics/Lists.hs
+2
-1
NgramsByNode.hs
src/Gargantext/Database/Action/Metrics/NgramsByNode.hs
+1
-1
Search.hs
src/Gargantext/Database/Action/Search.hs
+2
-2
Access.hs
src/Gargantext/Database/Admin/Access.hs
+1
-2
Bashql.hs
src/Gargantext/Database/Admin/Bashql.hs
+1
-1
Config.hs
src/Gargantext/Database/Admin/Config.hs
+1
-1
Ngrams.hs
src/Gargantext/Database/Admin/Schema/Ngrams.hs
+1
-1
Node.hs
src/Gargantext/Database/Admin/Schema/Node.hs
+251
-0
NodeNgrams.hs
src/Gargantext/Database/Admin/Schema/NodeNgrams.hs
+1
-1
NodeNode.hs
src/Gargantext/Database/Admin/Schema/NodeNode.hs
+2
-2
NodeNodeNgrams.hs
src/Gargantext/Database/Admin/Schema/NodeNodeNgrams.hs
+2
-2
NodeNodeNgrams2.hs
src/Gargantext/Database/Admin/Schema/NodeNodeNgrams2.hs
+2
-2
Node_NodeNgramsNodeNgrams.hs
...antext/Database/Admin/Schema/Node_NodeNgramsNodeNgrams.hs
+2
-2
NodesNgramsRepo.hs
src/Gargantext/Database/Admin/Schema/NodesNgramsRepo.hs
+2
-1
User.hs
src/Gargantext/Database/Admin/Schema/User.hs
+1
-77
Init.hs
src/Gargantext/Database/Admin/Trigger/Init.hs
+1
-1
NodeNodeNgrams.hs
src/Gargantext/Database/Admin/Trigger/NodeNodeNgrams.hs
+1
-1
Nodes.hs
src/Gargantext/Database/Admin/Trigger/Nodes.hs
+2
-2
NodesNodes.hs
src/Gargantext/Database/Admin/Trigger/NodesNodes.hs
+1
-1
Node.hs
src/Gargantext/Database/Admin/Types/Node.hs
+1
-1
Utils.hs
src/Gargantext/Database/Admin/Utils.hs
+1
-1
Facet.hs
src/Gargantext/Database/Query/Facet.hs
+3
-3
Filter.hs
src/Gargantext/Database/Query/Filter.hs
+2
-2
Join.hs
src/Gargantext/Database/Query/Join.hs
+2
-2
Ngrams.hs
src/Gargantext/Database/Query/Ngrams.hs
+5
-5
Children.hs
src/Gargantext/Database/Query/Node/Children.hs
+8
-8
Contact.hs
src/Gargantext/Database/Query/Node/Contact.hs
+1
-1
Add.hs
src/Gargantext/Database/Query/Node/Document/Add.hs
+3
-2
Insert.hs
src/Gargantext/Database/Query/Node/Document/Insert.hs
+1
-1
Select.hs
src/Gargantext/Database/Query/Node/Select.hs
+2
-1
Update.hs
src/Gargantext/Database/Query/Node/Update.hs
+2
-1
UpdateOpaleye.hs
src/Gargantext/Database/Query/Node/UpdateOpaleye.hs
+1
-1
User.hs
src/Gargantext/Database/Query/Node/User.hs
+31
-1
Root.hs
src/Gargantext/Database/Root.hs
+0
-65
Tree.hs
src/Gargantext/Database/Tree.hs
+0
-157
No files found.
src/Gargantext/Database/Flow.hs
→
src/Gargantext/Database/
Action/
Flow.hs
View file @
942a2832
...
...
@@ -27,7 +27,7 @@ Portability : POSIX
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module
Gargantext.Database.Flow
-- (flowDatabase, ngrams2list)
module
Gargantext.Database.
Action.
Flow
-- (flowDatabase, ngrams2list)
(
FlowCmdM
,
flowCorpusFile
,
flowCorpus
...
...
src/Gargantext/Database/Flow/Annuaire.hs
→
src/Gargantext/Database/
Action/
Flow/Annuaire.hs
View file @
942a2832
...
...
@@ -16,11 +16,10 @@ Portability : POSIX
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE FlexibleContexts #-}
module
Gargantext.Database.Flow.Annuaire
module
Gargantext.Database.
Action.
Flow.Annuaire
where
{-
import Gargantext.Prelude
import Gargantext.Database.Flow
...
...
src/Gargantext/Database/Flow/List.hs
→
src/Gargantext/Database/
Action/
Flow/List.hs
View file @
942a2832
...
...
@@ -21,7 +21,7 @@ Portability : POSIX
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module
Gargantext.Database.Flow.List
module
Gargantext.Database.
Action.
Flow.List
where
import
Data.Text
(
Text
)
import
Control.Monad
(
mapM_
)
...
...
src/Gargantext/Database/Flow/Pairing.hs
→
src/Gargantext/Database/
Action/
Flow/Pairing.hs
View file @
942a2832
...
...
@@ -16,7 +16,7 @@ Portability : POSIX
{-# LANGUAGE RankNTypes #-}
-- {-# LANGUAGE Arrows #-}
module
Gargantext.Database.Flow.Pairing
module
Gargantext.Database.
Action.
Flow.Pairing
(
pairing
)
where
...
...
src/Gargantext/Database/Flow/Types.hs
→
src/Gargantext/Database/
Action/
Flow/Types.hs
View file @
942a2832
...
...
@@ -21,7 +21,7 @@ Portability : POSIX
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module
Gargantext.Database.Flow.Types
module
Gargantext.Database.
Action.
Flow.Types
where
import
Data.Map
(
Map
)
...
...
src/Gargantext/Database/Flow/Utils.hs
→
src/Gargantext/Database/
Action/
Flow/Utils.hs
View file @
942a2832
...
...
@@ -14,7 +14,7 @@ Portability : POSIX
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Flow.Utils
module
Gargantext.Database.
Action.
Flow.Utils
where
import
Data.Map
(
Map
)
...
...
src/Gargantext/Database/Learn.hs
→
src/Gargantext/Database/
Action/
Learn.hs
View file @
942a2832
...
...
@@ -16,7 +16,8 @@ Portability : POSIX
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MonoLocalBinds #-}
module
Gargantext.Database.Learn
where
module
Gargantext.Database.Action.Learn
where
import
Data.Text
(
Text
)
import
Data.Tuple
(
snd
)
...
...
src/Gargantext/Database/Metrics.hs
→
src/Gargantext/Database/
Action/
Metrics.hs
View file @
942a2832
...
...
@@ -15,7 +15,7 @@ Node API
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE FlexibleContexts #-}
module
Gargantext.Database.Metrics
module
Gargantext.Database.
Action.
Metrics
where
import
Data.Map
(
Map
)
...
...
src/Gargantext/Database/Lists.hs
→
src/Gargantext/Database/
Action/Metrics/
Lists.hs
View file @
942a2832
...
...
@@ -23,7 +23,8 @@ Portability : POSIX
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
module
Gargantext.Database.Lists
where
module
Gargantext.Database.Action.Metrics.Lists
where
import
Gargantext.API.Ngrams
(
TabType
(
..
))
import
Gargantext.Core.Types
-- (NodePoly(..), NodeCorpus, ListId)
...
...
src/Gargantext/Database/Metrics/NgramsByNode.hs
→
src/Gargantext/Database/
Action/
Metrics/NgramsByNode.hs
View file @
942a2832
...
...
@@ -17,7 +17,7 @@ Ngrams by node enable contextual metrics.
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Metrics.NgramsByNode
module
Gargantext.Database.
Action.
Metrics.NgramsByNode
where
import
Debug.Trace
(
trace
)
...
...
src/Gargantext/Database/
Text
Search.hs
→
src/Gargantext/Database/
Action/
Search.hs
View file @
942a2832
...
...
@@ -14,7 +14,7 @@ Portability : POSIX
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.
Text
Search
where
module
Gargantext.Database.
Action.
Search
where
import
Data.Aeson
import
Data.Map.Strict
hiding
(
map
,
drop
,
take
)
...
...
@@ -35,7 +35,7 @@ import Gargantext.Database.Schema.Node
import
Gargantext.Database.Schema.Ngrams
import
Gargantext.Database.Schema.NodeNode
hiding
(
joinInCorpus
)
import
Gargantext.Database.Schema.NodeNodeNgrams
import
Gargantext.Database.Quer
ies
.Join
(
leftJoin6
)
import
Gargantext.Database.Quer
y
.Join
(
leftJoin6
)
import
Gargantext.Database.Utils
(
Cmd
,
runPGSQuery
,
runOpaQuery
,
runCountOpaQuery
)
import
Gargantext.Text.Terms.Mono.Stem.En
(
stemIt
)
import
Gargantext.Core.Types
...
...
src/Gargantext/Database/Access.hs
→
src/Gargantext/Database/A
dmin/A
ccess.hs
View file @
942a2832
...
...
@@ -13,8 +13,7 @@ TODO-SECURITY review purpose of this module
{-# LANGUAGE NoImplicitPrelude #-}
module
Gargantext.Database.Access
where
module
Gargantext.Database.Admin.Access
where
data
Action
=
Read
|
Write
|
Exec
data
Roles
=
RoleUser
|
RoleMaster
...
...
src/Gargantext/Database/Bashql.hs
→
src/Gargantext/Database/
Admin/
Bashql.hs
View file @
942a2832
...
...
@@ -64,7 +64,7 @@ TODO-ACCESS: should the checks be done here or before.
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Bashql
()
{-(
get
module
Gargantext.Database.
Admin.
Bashql
()
{-(
get
,
ls
,
home
,
post
...
...
src/Gargantext/Database/Config.hs
→
src/Gargantext/Database/
Admin/
Config.hs
View file @
942a2832
...
...
@@ -16,7 +16,7 @@ TODO: configure nodes table in Haskell (Config typenames etc.)
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module
Gargantext.Database.Config
module
Gargantext.Database.
Admin.
Config
where
...
...
src/Gargantext/Database/Schema/Ngrams.hs
→
src/Gargantext/Database/
Admin/
Schema/Ngrams.hs
View file @
942a2832
...
...
@@ -24,7 +24,7 @@ Ngrams connection to the Database.
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
module
Gargantext.Database.Schema.Ngrams
where
module
Gargantext.Database.
Admin.
Schema.Ngrams
where
import
Control.Lens
(
makeLenses
,
over
)
import
Control.Monad
(
mzero
)
...
...
src/Gargantext/Database/Schema/Node.hs
→
src/Gargantext/Database/
Admin/
Schema/Node.hs
View file @
942a2832
This diff is collapsed.
Click to expand it.
src/Gargantext/Database/Schema/NodeNgrams.hs
→
src/Gargantext/Database/
Admin/
Schema/NodeNgrams.hs
View file @
942a2832
...
...
@@ -25,7 +25,7 @@ NodeNgrams register Context of Ngrams (named Cgrams then)
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
module
Gargantext.Database.Schema.NodeNgrams
where
module
Gargantext.Database.
Admin.
Schema.NodeNgrams
where
import
Data.Map
(
Map
)
import
qualified
Data.Map
as
Map
...
...
src/Gargantext/Database/Schema/NodeNode.hs
→
src/Gargantext/Database/
Admin/
Schema/NodeNode.hs
View file @
942a2832
...
...
@@ -24,7 +24,7 @@ commentary with @some markup@.
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
module
Gargantext.Database.Schema.NodeNode
where
module
Gargantext.Database.
Admin.
Schema.NodeNode
where
import
Control.Lens
(
view
,
(
^.
))
import
qualified
Database.PostgreSQL.Simple
as
PGS
(
Query
,
Only
(
..
))
...
...
@@ -34,7 +34,7 @@ import Control.Lens.TH (makeLenses)
import
Data.Maybe
(
Maybe
,
catMaybes
)
import
Data.Text
(
Text
,
splitOn
)
import
Data.Profunctor.Product.TH
(
makeAdaptorAndInstance
)
import
Gargantext.Database.
Schema.Node
import
Gargantext.Database.
Tools.Node
(
pgNodeId
)
import
Gargantext.Core.Types
import
Gargantext.Database.Utils
import
Gargantext.Database.Config
(
nodeTypeId
)
...
...
src/Gargantext/Database/Schema/NodeNodeNgrams.hs
→
src/Gargantext/Database/
Admin/
Schema/NodeNodeNgrams.hs
View file @
942a2832
...
...
@@ -20,7 +20,7 @@ Portability : POSIX
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
module
Gargantext.Database.Schema.NodeNodeNgrams
module
Gargantext.Database.
Admin.
Schema.NodeNodeNgrams
where
import
Prelude
...
...
@@ -28,7 +28,7 @@ import Data.Profunctor.Product.TH (makeAdaptorAndInstance)
import
Control.Lens.TH
(
makeLenses
)
import
Gargantext.Database.Utils
(
Cmd
,
mkCmd
)
import
Gargantext.Database.Schema.Ngrams
(
NgramsTypeId
,
pgNgramsTypeId
,
NgramsId
)
import
Gargantext.Database.
Schema
.Node
(
pgNodeId
)
import
Gargantext.Database.
Tools
.Node
(
pgNodeId
)
import
Gargantext.Database.Types.Node
import
Opaleye
...
...
src/Gargantext/Database/Schema/NodeNodeNgrams2.hs
→
src/Gargantext/Database/
Admin/
Schema/NodeNodeNgrams2.hs
View file @
942a2832
...
...
@@ -20,7 +20,7 @@ Portability : POSIX
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
module
Gargantext.Database.Schema.NodeNodeNgrams2
module
Gargantext.Database.
Admin.
Schema.NodeNodeNgrams2
where
import
Prelude
...
...
@@ -28,7 +28,7 @@ import Data.Profunctor.Product.TH (makeAdaptorAndInstance)
import
Control.Lens.TH
(
makeLenses
)
import
Gargantext.Database.Utils
(
Cmd
,
mkCmd
)
import
Gargantext.Database.Schema.NodeNgrams
(
NodeNgramsId
)
import
Gargantext.Database.
Schema
.Node
(
pgNodeId
)
import
Gargantext.Database.
Tools
.Node
(
pgNodeId
)
import
Gargantext.Database.Types.Node
import
Opaleye
...
...
src/Gargantext/Database/Schema/Node_NodeNgramsNodeNgrams.hs
→
src/Gargantext/Database/
Admin/
Schema/Node_NodeNgramsNodeNgrams.hs
View file @
942a2832
...
...
@@ -33,7 +33,7 @@ Next Step benchmark:
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module
Gargantext.Database.Schema.Node_NodeNgramsNodeNgrams
module
Gargantext.Database.
Admin.
Schema.Node_NodeNgramsNodeNgrams
where
import
Control.Lens.TH
(
makeLensesWith
,
abbreviatedFields
)
...
...
@@ -41,7 +41,7 @@ import Data.Maybe (Maybe)
import
Data.Profunctor.Product.TH
(
makeAdaptorAndInstance
)
import
Gargantext.Database.Utils
(
Cmd
,
runOpaQuery
,
mkCmd
)
import
Gargantext.Database.Types.Node
(
CorpusId
)
import
Gargantext.Database.
Schema
.Node
(
pgNodeId
)
import
Gargantext.Database.
Tools
.Node
(
pgNodeId
)
import
Gargantext.Prelude
import
Opaleye
...
...
src/Gargantext/Database/Schema/NodesNgramsRepo.hs
→
src/Gargantext/Database/
Admin/
Schema/NodesNgramsRepo.hs
View file @
942a2832
...
...
@@ -25,7 +25,8 @@ Portability : POSIX
{-# LANGUAGE TemplateHaskell #-}
module
Gargantext.Database.Schema.NodesNgramsRepo
where
module
Gargantext.Database.Admin.Schema.NodesNgramsRepo
where
import
Control.Arrow
(
returnA
)
import
Control.Lens.TH
(
makeLenses
)
...
...
src/Gargantext/Database/Schema/User.hs
→
src/Gargantext/Database/
Admin/
Schema/User.hs
View file @
942a2832
...
...
@@ -23,7 +23,7 @@ Functions to deal with users, database side.
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Schema.User
where
module
Gargantext.Database.
Admin.
Schema.User
where
import
Control.Arrow
(
returnA
)
import
Control.Lens.TH
(
makeLensesWith
,
abbreviatedFields
)
...
...
@@ -113,79 +113,3 @@ userTable = Table "auth_user" (pUserDB UserDB { user_id = optional "id"
}
)
-- TODO: on conflict, nice message
insertUsers
::
[
UserWrite
]
->
Cmd
err
Int64
insertUsers
us
=
mkCmd
$
\
c
->
runInsert_
c
insert
where
insert
=
Insert
userTable
us
rCount
Nothing
gargantextUser
::
Username
->
UserWrite
gargantextUser
u
=
UserDB
(
Nothing
)
(
pgStrictText
"password"
)
(
Nothing
)
(
pgBool
True
)
(
pgStrictText
u
)
(
pgStrictText
"first_name"
)
(
pgStrictText
"last_name"
)
(
pgStrictText
"e@mail"
)
(
pgBool
True
)
(
pgBool
True
)
(
Nothing
)
insertUsersDemo
::
Cmd
err
Int64
insertUsersDemo
=
insertUsers
$
map
(
\
u
->
gargantextUser
u
)
arbitraryUsername
------------------------------------------------------------------
queryUserTable
::
Query
UserRead
queryUserTable
=
queryTable
userTable
selectUsersLight
::
Query
UserRead
selectUsersLight
=
proc
()
->
do
row
@
(
UserDB
i
_p
_ll
_is
_un
_fn
_ln
_m
_iff
_ive
_dj
)
<-
queryUserTable
-<
()
restrict
-<
i
.==
1
--returnA -< User i p ll is un fn ln m iff ive dj
returnA
-<
row
------------------------------------------------------------------
-- | Select User with some parameters
-- Not optimized version
userWith
::
(
Eq
a1
,
Foldable
t
)
=>
(
a
->
a1
)
->
a1
->
t
a
->
Maybe
a
userWith
f
t
xs
=
find
(
\
x
->
f
x
==
t
)
xs
-- | Select User with Username
userWithUsername
::
Text
->
[
UserDB
]
->
Maybe
UserDB
userWithUsername
t
xs
=
userWith
user_username
t
xs
userWithId
::
Int
->
[
UserDB
]
->
Maybe
UserDB
userWithId
t
xs
=
userWith
user_id
t
xs
userLightWithUsername
::
Text
->
[
UserLight
]
->
Maybe
UserLight
userLightWithUsername
t
xs
=
userWith
userLight_username
t
xs
userLightWithId
::
Int
->
[
UserLight
]
->
Maybe
UserLight
userLightWithId
t
xs
=
userWith
userLight_id
t
xs
instance
QueryRunnerColumnDefault
PGTimestamptz
(
Maybe
UTCTime
)
where
queryRunnerColumnDefault
=
fieldQueryRunnerColumn
users
::
Cmd
err
[
UserDB
]
users
=
runOpaQuery
queryUserTable
usersLight
::
Cmd
err
[
UserLight
]
usersLight
=
map
toUserLight
<$>
users
getUser
::
Username
->
Cmd
err
(
Maybe
UserLight
)
getUser
u
=
userLightWithUsername
u
<$>
usersLight
getUserId
::
HasNodeError
err
=>
User
->
Cmd
err
UserId
getUserId
(
UserDBId
uid
)
=
pure
uid
getUserId
(
RootId
rid
)
=
do
n
<-
getNode
rid
pure
$
_node_userId
n
getUserId
(
UserName
u
)
=
do
muser
<-
getUser
u
case
muser
of
Just
user
->
pure
$
userLight_id
user
Nothing
->
nodeError
NoUserFound
src/Gargantext/Database/Init.hs
→
src/Gargantext/Database/
Admin/Trigger/
Init.hs
View file @
942a2832
...
...
@@ -17,7 +17,7 @@ Ngrams by node enable contextual metrics.
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Init
module
Gargantext.Database.
Admin.Trigger.
Init
where
-- import Database.PostgreSQL.Simple.Types (Values(..), QualifiedIdentifier(..))
...
...
src/Gargantext/Database/
Triggers
/NodeNodeNgrams.hs
→
src/Gargantext/Database/
Admin/Trigger
/NodeNodeNgrams.hs
View file @
942a2832
...
...
@@ -17,7 +17,7 @@ Triggers on NodeNodeNgrams table.
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.
Triggers
.NodeNodeNgrams
module
Gargantext.Database.
Admin.Trigger
.NodeNodeNgrams
where
import
Database.PostgreSQL.Simple.SqlQQ
(
sql
)
...
...
src/Gargantext/Database/
Triggers
/Nodes.hs
→
src/Gargantext/Database/
Admin/Trigger
/Nodes.hs
View file @
942a2832
{-|
Module : Gargantext.Database.
Triggers
.Nodes
Module : Gargantext.Database.
Admin.Trigger
.Nodes
Description : Triggers configuration
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
...
...
@@ -17,7 +17,7 @@ Triggers on Nodes table.
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.
Triggers
.Nodes
module
Gargantext.Database.
Admin.Trigger
.Nodes
where
import
Database.PostgreSQL.Simple.SqlQQ
(
sql
)
...
...
src/Gargantext/Database/
Triggers
/NodesNodes.hs
→
src/Gargantext/Database/
Admin/Trigger
/NodesNodes.hs
View file @
942a2832
...
...
@@ -17,7 +17,7 @@ Triggers on NodesNodes table.
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.
Triggers
.NodesNodes
module
Gargantext.Database.
Admin.Trigger
.NodesNodes
where
import
Database.PostgreSQL.Simple.SqlQQ
(
sql
)
...
...
src/Gargantext/Database/Types/Node.hs
→
src/Gargantext/Database/
Admin/
Types/Node.hs
View file @
942a2832
...
...
@@ -22,7 +22,7 @@ Portability : POSIX
-- {-# LANGUAGE DuplicateRecordFields #-}
module
Gargantext.Database.Types.Node
module
Gargantext.Database.
Admin.
Types.Node
where
import
Prelude
(
Enum
,
Bounded
,
minBound
,
maxBound
)
...
...
src/Gargantext/Database/Utils.hs
→
src/Gargantext/Database/
Admin/
Utils.hs
View file @
942a2832
...
...
@@ -19,7 +19,7 @@ commentary with @some markup@.
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Utils
where
module
Gargantext.Database.
Admin.
Utils
where
import
Data.ByteString.Char8
(
hPutStrLn
)
import
System.IO
(
stderr
)
...
...
src/Gargantext/Database/Facet.hs
→
src/Gargantext/Database/
Query/
Facet.hs
View file @
942a2832
...
...
@@ -25,7 +25,7 @@ Portability : POSIX
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
------------------------------------------------------------------------
module
Gargantext.Database.Facet
module
Gargantext.Database.
Query.
Facet
(
runViewAuthorsDoc
,
runViewDocuments
,
filterWith
...
...
@@ -62,8 +62,8 @@ import Gargantext.Database.Schema.NodeNode
import
Gargantext.Database.Schema.NodeNodeNgrams
-- import Gargantext.Database.Schema.NodeNodeNgrams2
import
Gargantext.Database.Utils
import
Gargantext.Database.Quer
ies
.Filter
import
Gargantext.Database.Quer
ies
.Join
(
leftJoin5
)
import
Gargantext.Database.Quer
y
.Filter
import
Gargantext.Database.Quer
y
.Join
(
leftJoin5
)
import
Opaleye
import
Prelude
hiding
(
null
,
id
,
map
,
sum
,
not
,
read
)
import
Servant.API
...
...
src/Gargantext/Database/Quer
ies
/Filter.hs
→
src/Gargantext/Database/Quer
y
/Filter.hs
View file @
942a2832
{-|
Module : Gargantext.Database.Quer
ies
.Filter
Module : Gargantext.Database.Quer
y
.Filter
Description : Main requests of Node to the database
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
...
...
@@ -19,7 +19,7 @@ Portability : POSIX
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module
Gargantext.Database.Quer
ies
.Filter
where
module
Gargantext.Database.Quer
y
.Filter
where
import
Gargantext.Core.Types
(
Limit
,
Offset
)
import
Data.Maybe
(
Maybe
,
maybe
)
...
...
src/Gargantext/Database/Quer
ies
/Join.hs
→
src/Gargantext/Database/Quer
y
/Join.hs
View file @
942a2832
{-|
Module : Gargantext.Database.Quer
ies
.Join
Module : Gargantext.Database.Quer
y
.Join
Description : Main Join queries (using Opaleye)
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
...
...
@@ -26,7 +26,7 @@ Multiple Join functions with Opaleye.
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
------------------------------------------------------------------------
module
Gargantext.Database.Quer
ies
.Join
module
Gargantext.Database.Quer
y.Query
.Join
where
------------------------------------------------------------------------
...
...
src/Gargantext/Database/Ngrams.hs
→
src/Gargantext/Database/
Query/
Ngrams.hs
View file @
942a2832
...
...
@@ -14,16 +14,16 @@ Portability : POSIX
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Ngrams
module
Gargantext.Database.
Query.
Ngrams
where
import
Data.Text
(
Text
)
import
Control.Lens
((
^.
))
import
Gargantext.Core.Types
import
Gargantext.Database.Utils
(
runOpaQuery
,
Cmd
)
import
Gargantext.Database.Schema.Ngrams
import
Gargantext.Database.Schema.NodeNodeNgrams
import
Gargantext.Database.Schema.Node
import
Gargantext.Database.
Admin.
Utils
(
runOpaQuery
,
Cmd
)
import
Gargantext.Database.
Admin.
Schema.Ngrams
import
Gargantext.Database.
Admin.
Schema.NodeNodeNgrams
import
Gargantext.Database.
Admin.
Schema.Node
import
Gargantext.Prelude
import
Opaleye
import
Control.Arrow
(
returnA
)
...
...
src/Gargantext/Database/Node/Children.hs
→
src/Gargantext/Database/
Query/
Node/Children.hs
View file @
942a2832
...
...
@@ -16,18 +16,18 @@ Portability : POSIX
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Node.Children
where
module
Gargantext.Database.
Query.
Node.Children
where
import
Data.Proxy
import
Opaleye
import
Gargantext.Core.Types
import
Gargantext.Database.Schema.Node
import
Gargantext.Database.Utils
import
Gargantext.Database.Schema.NodeNode
import
Gargantext.Database.Config
(
nodeTypeId
)
import
Gargantext.Database.Quer
ies
.Filter
import
Gargantext.Database.Node.Contact
(
HyperdataContact
)
import
Gargantext.Database.Schema.Node
(
pgNodeId
)
import
Gargantext.Database.
Admin.
Schema.Node
import
Gargantext.Database.
Admin.
Utils
import
Gargantext.Database.
Admin.
Schema.NodeNode
import
Gargantext.Database.
Admin.
Config
(
nodeTypeId
)
import
Gargantext.Database.Quer
y
.Filter
import
Gargantext.Database.
Query.
Node.Contact
(
HyperdataContact
)
import
Gargantext.Database.
Admin.
Schema.Node
(
pgNodeId
)
import
Control.Arrow
(
returnA
)
getAllDocuments
::
ParentId
->
Cmd
err
(
TableResult
(
Node
HyperdataDocument
))
...
...
src/Gargantext/Database/Node/Contact.hs
→
src/Gargantext/Database/
Query/
Node/Contact.hs
View file @
942a2832
...
...
@@ -17,7 +17,7 @@ Portability : POSIX
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-}
module
Gargantext.Database.Node.Contact
module
Gargantext.Database.
Query.
Node.Contact
where
import
Control.Lens
(
makeLenses
)
...
...
src/Gargantext/Database/Node/Document/Add.hs
→
src/Gargantext/Database/
Query/
Node/Document/Add.hs
View file @
942a2832
...
...
@@ -21,9 +21,10 @@ Add Documents/Contact to a Corpus/Annuaire.
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeSynonymInstances #-}
------------------------------------------------------------------------
module
Gargantext.Database.Node.Document.Add
where
------------------------------------------------------------------------
module
Gargantext.Database.Query.Node.Document.Add
where
import
Data.ByteString.Internal
(
ByteString
)
import
Data.Typeable
(
Typeable
)
...
...
src/Gargantext/Database/Node/Document/Insert.hs
→
src/Gargantext/Database/
Query/
Node/Document/Insert.hs
View file @
942a2832
...
...
@@ -57,7 +57,7 @@ the concatenation of the parameters defined by @shaParameters@.
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeSynonymInstances #-}
------------------------------------------------------------------------
module
Gargantext.Database.Node.Document.Insert
where
module
Gargantext.Database.
Query.
Node.Document.Insert
where
import
Control.Lens
(
set
,
view
)
import
Control.Lens.Prism
...
...
src/Gargantext/Database/Node/Select.hs
→
src/Gargantext/Database/
Query/
Node/Select.hs
View file @
942a2832
...
...
@@ -14,7 +14,8 @@ Portability : POSIX
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Node.Select
where
module
Gargantext.Database.Query.Node.Select
where
import
Opaleye
import
Gargantext.Core.Types
...
...
src/Gargantext/Database/Node/Update.hs
→
src/Gargantext/Database/
Query/
Node/Update.hs
View file @
942a2832
...
...
@@ -16,7 +16,8 @@ Portability : POSIX
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Node.Update
(
Update
(
..
),
update
)
where
module
Gargantext.Database.Query.Node.Update
(
Update
(
..
),
update
)
where
import
qualified
Data.Text
as
DT
import
Database.PostgreSQL.Simple
...
...
src/Gargantext/Database/Node/UpdateOpaleye.hs
→
src/Gargantext/Database/
Query/
Node/UpdateOpaleye.hs
View file @
942a2832
...
...
@@ -16,7 +16,7 @@ Portability : POSIX
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Node.UpdateOpaleye
where
module
Gargantext.Database.
Query.
Node.UpdateOpaleye
where
import
Opaleye
...
...
src/Gargantext/Database/Node/User.hs
→
src/Gargantext/Database/
Query/
Node/User.hs
View file @
942a2832
...
...
@@ -17,7 +17,7 @@ Portability : POSIX
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-}
module
Gargantext.Database.Node.User
module
Gargantext.Database.
Query.
Node.User
where
import
Control.Lens
(
makeLenses
)
...
...
@@ -31,6 +31,9 @@ import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger)
import
Gargantext.Database.Node.Contact
(
HyperdataContact
,
fake_HyperdataContact
)
import
Gargantext.Database.Types.Node
(
Node
,
Hyperdata
,
DocumentId
,
NodeId
(
..
))
import
Gargantext.Database.Utils
(
fromField'
)
import
Gargantext.Database.Tools.Node
(
getNode
)
import
Gargantext.Database.Schema.Node
(
Node
(
..
))
import
Gargantext.Core.Types.Individu
(
Username
,
arbitraryUsername
,
User
(
..
),
UserId
)
import
Gargantext.Prelude
import
Opaleye
(
QueryRunnerColumnDefault
,
queryRunnerColumnDefault
,
PGJsonb
,
fieldQueryRunnerColumn
)
import
Test.QuickCheck
(
elements
)
...
...
@@ -126,5 +129,32 @@ $(deriveJSON (unPrefix "_hpr_") ''HyperdataPrivate)
$
(
deriveJSON
(
unPrefix
"_hpu_"
)
''
H
yperdataPublic
)
-----------------------------------------------------------------
getUserId
::
HasNodeError
err
=>
User
->
Cmd
err
UserId
getUserId
(
UserDBId
uid
)
=
pure
uid
getUserId
(
RootId
rid
)
=
do
n
<-
getNode
rid
pure
$
_node_userId
n
getUserId
(
UserName
u
)
=
do
muser
<-
getUser
u
case
muser
of
Just
user
->
pure
$
userLight_id
user
Nothing
->
nodeError
NoUserFound
getNodeUser
::
NodeId
->
Cmd
err
(
Node
HyperdataUser
)
getNodeUser
nId
=
do
fromMaybe
(
error
$
"Node does not exist: "
<>
show
nId
)
.
headMay
<$>
runOpaQuery
(
limit
1
$
selectNode
(
pgNodeId
nId
))
nodeUserW
::
Maybe
Name
->
Maybe
HyperdataUser
->
UserId
->
NodeWrite
nodeUserW
maybeName
maybeHyperdata
=
node
NodeUser
name
user
Nothing
where
name
=
maybe
"User"
identity
maybeName
user
=
maybe
fake_HyperdataUser
identity
maybeHyperdata
src/Gargantext/Database/Root.hs
deleted
100644 → 0
View file @
b7355306
{-|
Module : Gargantext.Database.Root
Description : Main requests to get root of users
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
Maintainer : team@gargantext.org
Stability : experimental
Portability : POSIX
-}
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE Arrows #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
module
Gargantext.Database.Root
where
import
Control.Arrow
(
returnA
)
import
Gargantext.Core.Types.Individu
(
User
(
..
))
import
Gargantext.Database.Config
(
nodeTypeId
)
import
Gargantext.Database.Node.User
(
HyperdataUser
)
import
Gargantext.Database.Schema.Node
(
NodeRead
)
import
Gargantext.Database.Schema.Node
(
queryNodeTable
)
import
Gargantext.Database.Schema.User
(
queryUserTable
,
UserPoly
(
..
))
import
Gargantext.Database.Types.Node
(
Node
,
NodePoly
(
..
),
NodeType
(
NodeUser
))
import
Gargantext.Database.Utils
(
Cmd
,
runOpaQuery
)
import
Gargantext.Prelude
import
Opaleye
(
restrict
,
(
.==
),
Query
)
import
Opaleye.PGTypes
(
pgStrictText
,
pgInt4
)
getRoot
::
User
->
Cmd
err
[
Node
HyperdataUser
]
getRoot
=
runOpaQuery
.
selectRoot
selectRoot
::
User
->
Query
NodeRead
selectRoot
(
UserName
username
)
=
proc
()
->
do
row
<-
queryNodeTable
-<
()
users
<-
queryUserTable
-<
()
restrict
-<
_node_typename
row
.==
(
pgInt4
$
nodeTypeId
NodeUser
)
restrict
-<
user_username
users
.==
(
pgStrictText
username
)
restrict
-<
_node_userId
row
.==
(
user_id
users
)
returnA
-<
row
selectRoot
(
UserDBId
uid
)
=
proc
()
->
do
row
<-
queryNodeTable
-<
()
restrict
-<
_node_typename
row
.==
(
pgInt4
$
nodeTypeId
NodeUser
)
restrict
-<
_node_userId
row
.==
(
pgInt4
uid
)
returnA
-<
row
src/Gargantext/Database/Tree.hs
deleted
100644 → 0
View file @
b7355306
{-|
Module : Gargantext.Database.Tree
Description : Tree of Resource Nodes built from Database
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
Maintainer : team@gargantext.org
Stability : experimental
Portability : POSIX
Let a Root Node, return the Tree of the Node as a directed acyclic graph
(Tree).
-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE RankNTypes #-}
module
Gargantext.Database.Tree
(
treeDB
,
TreeError
(
..
)
,
HasTreeError
(
..
)
,
dbTree
,
toNodeTree
,
DbTreeNode
,
isDescendantOf
,
isIn
)
where
import
Control.Lens
(
Prism
'
,
(
#
),
(
^..
),
at
,
each
,
_Just
,
to
)
import
Control.Monad.Error.Class
(
MonadError
(
throwError
))
import
Data.Map
(
Map
,
fromListWith
,
lookup
)
import
Data.Text
(
Text
)
import
Database.PostgreSQL.Simple
import
Database.PostgreSQL.Simple.SqlQQ
import
Gargantext.Prelude
import
Gargantext.Core.Types.Main
(
NodeTree
(
..
),
Tree
(
..
))
import
Gargantext.Database.Config
(
fromNodeTypeId
,
nodeTypeId
)
import
Gargantext.Database.Types.Node
(
NodeId
,
NodeType
,
DocId
,
allNodeTypes
)
import
Gargantext.Database.Utils
(
Cmd
,
runPGSQuery
)
------------------------------------------------------------------------
-- import Gargantext.Database.Utils (runCmdDev)
-- treeTest :: IO (Tree NodeTree)
-- treeTest = runCmdDev $ treeDB 347474
------------------------------------------------------------------------
data
TreeError
=
NoRoot
|
EmptyRoot
|
TooManyRoots
deriving
(
Show
)
class
HasTreeError
e
where
_TreeError
::
Prism'
e
TreeError
treeError
::
(
MonadError
e
m
,
HasTreeError
e
)
=>
TreeError
->
m
a
treeError
te
=
throwError
$
_TreeError
#
te
-- | Returns the Tree of Nodes in Database
treeDB
::
HasTreeError
err
=>
RootId
->
[
NodeType
]
->
Cmd
err
(
Tree
NodeTree
)
treeDB
r
nodeTypes
=
toTree
=<<
(
toTreeParent
<$>
dbTree
r
nodeTypes
)
type
RootId
=
NodeId
type
ParentId
=
NodeId
------------------------------------------------------------------------
toTree
::
(
MonadError
e
m
,
HasTreeError
e
)
=>
Map
(
Maybe
ParentId
)
[
DbTreeNode
]
->
m
(
Tree
NodeTree
)
toTree
m
=
case
lookup
Nothing
m
of
Just
[
n
]
->
pure
$
toTree'
m
n
Nothing
->
treeError
NoRoot
Just
[]
->
treeError
EmptyRoot
Just
_
->
treeError
TooManyRoots
toTree'
::
Map
(
Maybe
ParentId
)
[
DbTreeNode
]
->
DbTreeNode
->
Tree
NodeTree
toTree'
m
n
=
TreeN
(
toNodeTree
n
)
$
m
^..
at
(
Just
$
dt_nodeId
n
)
.
_Just
.
each
.
to
(
toTree'
m
)
------------------------------------------------------------------------
toNodeTree
::
DbTreeNode
->
NodeTree
toNodeTree
(
DbTreeNode
nId
tId
_
n
)
=
NodeTree
n
nodeType
nId
where
nodeType
=
fromNodeTypeId
tId
------------------------------------------------------------------------
toTreeParent
::
[
DbTreeNode
]
->
Map
(
Maybe
ParentId
)
[
DbTreeNode
]
toTreeParent
=
fromListWith
(
<>
)
.
map
(
\
n
->
(
dt_parentId
n
,
[
n
]))
------------------------------------------------------------------------
data
DbTreeNode
=
DbTreeNode
{
dt_nodeId
::
NodeId
,
dt_typeId
::
Int
,
dt_parentId
::
Maybe
NodeId
,
dt_name
::
Text
}
deriving
(
Show
)
-- | Main DB Tree function
-- TODO add typenames as parameters
dbTree
::
RootId
->
[
NodeType
]
->
Cmd
err
[
DbTreeNode
]
dbTree
rootId
nodeTypes
=
map
(
\
(
nId
,
tId
,
pId
,
n
)
->
DbTreeNode
nId
tId
pId
n
)
<$>
runPGSQuery
[
sql
|
WITH RECURSIVE
tree (id, typename, parent_id, name) AS
(
SELECT p.id, p.typename, p.parent_id, p.name
FROM nodes AS p
WHERE p.id = ?
UNION
SELECT c.id, c.typename, c.parent_id, c.name
FROM nodes AS c
INNER JOIN tree AS s ON c.parent_id = s.id
WHERE c.typename IN ?
)
SELECT * from tree;
|]
(
rootId
,
In
typename
)
where
typename
=
map
nodeTypeId
ns
ns
=
case
nodeTypes
of
[]
->
allNodeTypes
-- [2, 20, 21, 22, 3, 5, 30, 31, 40, 7, 9, 90, 71]
_
->
nodeTypes
isDescendantOf
::
NodeId
->
RootId
->
Cmd
err
Bool
isDescendantOf
childId
rootId
=
(
==
[
Only
True
])
<$>
runPGSQuery
[
sql
|
BEGIN ;
SET TRANSACTION READ ONLY;
COMMIT;
WITH RECURSIVE
tree (id, parent_id) AS
(
SELECT c.id, c.parent_id
FROM nodes AS c
WHERE c.id = ?
UNION
SELECT p.id, p.parent_id
FROM nodes AS p
INNER JOIN tree AS t ON t.parent_id = p.id
)
SELECT COUNT(*) = 1 from tree AS t
WHERE t.id = ?;
|]
(
childId
,
rootId
)
-- TODO should we check the category?
isIn
::
NodeId
->
DocId
->
Cmd
err
Bool
isIn
cId
docId
=
(
==
[
Only
True
])
<$>
runPGSQuery
[
sql
|
SELECT COUNT(*) = 1
FROM nodes_nodes nn
WHERE nn.node1_id = ?
AND nn.node2_id = ?;
|]
(
cId
,
docId
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment