Commit 6ce2781c authored by Alexandre Delanoë's avatar Alexandre Delanoë

Merge remote-tracking branch 'origin/250-dev-fix-corpus-hyperdata-update' into dev-merge

parents 6b6b1d1b 41c23932
...@@ -15,9 +15,7 @@ Import a corpus binary. ...@@ -15,9 +15,7 @@ Import a corpus binary.
module Main where module Main where
import Control.Exception (finally)
import Data.Either import Data.Either
import Data.Maybe (Maybe(..))
import Data.Text (Text) import Data.Text (Text)
import System.Environment (getArgs) import System.Environment (getArgs)
import qualified Data.Text as Text import qualified Data.Text as Text
...@@ -25,7 +23,6 @@ import Text.Read (readMaybe) ...@@ -25,7 +23,6 @@ import Text.Read (readMaybe)
import Gargantext.API.Dev (withDevEnv, runCmdGargDev) import Gargantext.API.Dev (withDevEnv, runCmdGargDev)
import Gargantext.API.Admin.EnvTypes (DevEnv(..), DevJobHandle(..)) import Gargantext.API.Admin.EnvTypes (DevEnv(..), DevJobHandle(..))
import Gargantext.API.Admin.Orchestrator.Types (JobLog)
import Gargantext.API.Node () -- instances import Gargantext.API.Node () -- instances
import Gargantext.API.Prelude (GargError) import Gargantext.API.Prelude (GargError)
import Gargantext.Core (Lang(..)) import Gargantext.Core (Lang(..))
...@@ -33,9 +30,7 @@ import Gargantext.Core.Types.Individu (User(..)) ...@@ -33,9 +30,7 @@ import Gargantext.Core.Types.Individu (User(..))
import Gargantext.Core.Types.Query (Limit) import Gargantext.Core.Types.Query (Limit)
import Gargantext.Database.Action.Flow (flowCorpusFile, flowAnnuaire, TermType(..)) import Gargantext.Database.Action.Flow (flowCorpusFile, flowAnnuaire, TermType(..))
import Gargantext.Database.Action.Flow.Types (FlowCmdM) import Gargantext.Database.Action.Flow.Types (FlowCmdM)
import Gargantext.Database.Admin.Types.Hyperdata (toHyperdataDocument)
import Gargantext.Database.Admin.Types.Node (CorpusId) import Gargantext.Database.Admin.Types.Node (CorpusId)
import Gargantext.Database.Prelude (Cmd)
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.Core.Text.Corpus.Parsers (FileFormat(..), FileType(..)) import Gargantext.Core.Text.Corpus.Parsers (FileFormat(..), FileType(..))
import Gargantext.Utils.Jobs (MonadJobStatus, JobHandle) import Gargantext.Utils.Jobs (MonadJobStatus, JobHandle)
......
...@@ -21,14 +21,9 @@ Script to start gargantext with different modes (Dev, Prod, Mock). ...@@ -21,14 +21,9 @@ Script to start gargantext with different modes (Dev, Prod, Mock).
module Main where module Main where
import Data.Maybe (fromMaybe)
import Data.Text (unpack) import Data.Text (unpack)
import Data.Version (showVersion) import Data.Version (showVersion)
import Database.PostgreSQL.Simple.SqlQQ (sql)
import GHC.IO.Exception (IOException)
import Gargantext.API (startGargantext, Mode(..)) -- , startGargantextMock) import Gargantext.API (startGargantext, Mode(..)) -- , startGargantextMock)
import Gargantext.API.Admin.EnvTypes (DevEnv)
import Gargantext.API.Dev (withDevEnv, runCmdDev)
import Gargantext.Prelude import Gargantext.Prelude
import Options.Generic import Options.Generic
import System.Exit (exitSuccess) import System.Exit (exitSuccess)
......
...@@ -16,22 +16,8 @@ Import a corpus binary. ...@@ -16,22 +16,8 @@ Import a corpus binary.
module Main where module Main where
import Data.Either (Either(..)) import Gargantext.API.Dev (withDevEnv)
import Database.PostgreSQL.Simple.SqlQQ (sql)
import GHC.IO.Exception (IOException)
import Gargantext.API.Admin.EnvTypes (DevEnv)
import Gargantext.API.Dev (withDevEnv, runCmdDev)
import Gargantext.API.Ngrams.Tools (migrateFromDirToDb)
import Gargantext.API.Node () -- instances only import Gargantext.API.Node () -- instances only
import Gargantext.API.Prelude (GargError)
import Gargantext.Core (HasDBid(toDBid))
import Gargantext.Core.Types.Individu (User(..))
import Gargantext.Database.Action.Flow (getOrMk_RootWithCorpus)
import Gargantext.Database.Admin.Config (userMaster, corpusMasterName)
import Gargantext.Database.Admin.Trigger.Init
import Gargantext.Database.Admin.Types.Hyperdata (HyperdataCorpus)
import Gargantext.Database.Admin.Types.Node (NodeType(NodeDocument, NodeContact))
import Gargantext.Database.Prelude (Cmd'', Cmd, execPGSQuery)
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.Prelude.Config (GargConfig(..), readConfig) import Gargantext.Prelude.Config (GargConfig(..), readConfig)
import Prelude (getLine) import Prelude (getLine)
......
...@@ -192,9 +192,7 @@ nodeNodeAPI p uId cId nId = withAccess (Proxy :: Proxy (NodeNodeAPI a)) Proxy uI ...@@ -192,9 +192,7 @@ nodeNodeAPI p uId cId nId = withAccess (Proxy :: Proxy (NodeNodeAPI a)) Proxy uI
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- TODO: make the NodeId type indexed by `a`, then we no longer need the proxy. -- TODO: make the NodeId type indexed by `a`, then we no longer need the proxy.
nodeAPI :: forall proxy a. nodeAPI :: forall proxy a.
( JSONB a ( HyperdataC a
, FromJSON a
, ToJSON a
) => proxy a ) => proxy a
-> UserId -> UserId
-> NodeId -> NodeId
...@@ -348,7 +346,7 @@ treeFlatAPI = tree_flat ...@@ -348,7 +346,7 @@ treeFlatAPI = tree_flat
rename :: NodeId -> RenameNode -> Cmd err [Int] rename :: NodeId -> RenameNode -> Cmd err [Int]
rename nId (RenameNode name') = U.update (U.Rename nId name') rename nId (RenameNode name') = U.update (U.Rename nId name')
putNode :: forall err a. (HasNodeError err, JSONB a, ToJSON a) putNode :: forall err a. (HasNodeError err, HyperdataC a)
=> NodeId => NodeId
-> a -> a
-> Cmd err Int -> Cmd err Int
......
...@@ -3,18 +3,18 @@ module Gargantext.API.Node.Corpus.Update ...@@ -3,18 +3,18 @@ module Gargantext.API.Node.Corpus.Update
( addLanguageToCorpus ) ( addLanguageToCorpus )
where where
import Control.Lens
import Control.Monad
import Data.Proxy
import Gargantext.Core import Gargantext.Core
import Gargantext.Database.Action.Flow.Types import Gargantext.Database.Action.Flow.Types
import Gargantext.Database.Admin.Types.Node
import Gargantext.Prelude
import Gargantext.Utils.Jobs
import Gargantext.Database.Admin.Types.Hyperdata.Corpus import Gargantext.Database.Admin.Types.Hyperdata.Corpus
import Gargantext.Database.Admin.Types.Node
import Gargantext.Database.Query.Table.Node import Gargantext.Database.Query.Table.Node
import Data.Proxy
import Control.Lens
import Gargantext.Database.Schema.Node (node_hyperdata)
import Gargantext.Database.Query.Table.Node.UpdateOpaleye (updateHyperdata) import Gargantext.Database.Query.Table.Node.UpdateOpaleye (updateHyperdata)
import Control.Monad import Gargantext.Database.Schema.Node (node_hyperdata)
import Gargantext.Prelude
import Gargantext.Utils.Jobs
-- | Updates the 'HyperdataCorpus' with the input 'Lang'. -- | Updates the 'HyperdataCorpus' with the input 'Lang'.
addLanguageToCorpus :: (FlowCmdM env err m, MonadJobStatus m) addLanguageToCorpus :: (FlowCmdM env err m, MonadJobStatus m)
...@@ -24,4 +24,4 @@ addLanguageToCorpus :: (FlowCmdM env err m, MonadJobStatus m) ...@@ -24,4 +24,4 @@ addLanguageToCorpus :: (FlowCmdM env err m, MonadJobStatus m)
addLanguageToCorpus cId lang = do addLanguageToCorpus cId lang = do
hyperNode <- getNodeWith cId (Proxy @HyperdataCorpus) hyperNode <- getNodeWith cId (Proxy @HyperdataCorpus)
let hyperNode' = hyperNode & over node_hyperdata (\corpus -> corpus { _hc_lang = Just lang }) let hyperNode' = hyperNode & over node_hyperdata (\corpus -> corpus { _hc_lang = Just lang })
void $ updateHyperdata cId hyperNode' void $ updateHyperdata cId $ hyperNode' ^. node_hyperdata
...@@ -41,7 +41,7 @@ import Gargantext.Database.Admin.Types.Hyperdata.Folder ...@@ -41,7 +41,7 @@ import Gargantext.Database.Admin.Types.Hyperdata.Folder
import Gargantext.Database.Admin.Types.Hyperdata.Frame import Gargantext.Database.Admin.Types.Hyperdata.Frame
import Gargantext.Database.Admin.Types.Hyperdata.List import Gargantext.Database.Admin.Types.Hyperdata.List
import Gargantext.Database.Admin.Types.Hyperdata.Model import Gargantext.Database.Admin.Types.Hyperdata.Model
import Gargantext.Database.Admin.Types.Hyperdata.Prelude (Hyperdata) import Gargantext.Database.Admin.Types.Hyperdata.Prelude (Hyperdata, HyperdataC)
import Gargantext.Database.Admin.Types.Hyperdata.Texts import Gargantext.Database.Admin.Types.Hyperdata.Texts
import Gargantext.Database.Admin.Types.Hyperdata.Phylo import Gargantext.Database.Admin.Types.Hyperdata.Phylo
import Gargantext.Database.Admin.Types.Hyperdata.User import Gargantext.Database.Admin.Types.Hyperdata.User
......
...@@ -35,7 +35,7 @@ data HyperdataCorpus = ...@@ -35,7 +35,7 @@ data HyperdataCorpus =
-- 'defaultLanguage' if we don't know which language it is. -- 'defaultLanguage' if we don't know which language it is.
, _hc_lang :: Maybe Lang , _hc_lang :: Maybe Lang
} }
deriving (Generic) deriving (Generic, Show)
defaultHyperdataCorpus :: HyperdataCorpus defaultHyperdataCorpus :: HyperdataCorpus
defaultHyperdataCorpus = defaultHyperdataCorpus =
......
{-# LANGUAGE ConstraintKinds #-}
{-| {-|
Module : Gargantext.Database.Admin.Types.Hyperdata.Prelude Module : Gargantext.Database.Admin.Types.Hyperdata.Prelude
Description : Description :
...@@ -29,6 +31,7 @@ module Gargantext.Database.Admin.Types.Hyperdata.Prelude ...@@ -29,6 +31,7 @@ module Gargantext.Database.Admin.Types.Hyperdata.Prelude
, module Test.QuickCheck , module Test.QuickCheck
, module Test.QuickCheck.Arbitrary , module Test.QuickCheck.Arbitrary
, Hyperdata , Hyperdata
, HyperdataC
, Chart(..) , Chart(..)
) )
where where
...@@ -46,7 +49,7 @@ import Database.PostgreSQL.Simple.FromField (FromField, fromField) ...@@ -46,7 +49,7 @@ import Database.PostgreSQL.Simple.FromField (FromField, fromField)
import Database.PostgreSQL.Simple.ToField (ToField, toField, toJSONField) import Database.PostgreSQL.Simple.ToField (ToField, toField, toJSONField)
import GHC.Generics (Generic) import GHC.Generics (Generic)
import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger, wellNamedSchema) import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixSwagger, wellNamedSchema)
import Gargantext.Database.Prelude (fromField') import Gargantext.Database.Prelude (fromField', JSONB)
import Gargantext.Prelude import Gargantext.Prelude
import Opaleye (DefaultFromField, defaultFromField, Nullable, SqlJsonb, fromPGSFromField) import Opaleye (DefaultFromField, defaultFromField, Nullable, SqlJsonb, fromPGSFromField)
import Test.QuickCheck (elements) import Test.QuickCheck (elements)
...@@ -56,6 +59,12 @@ import Test.QuickCheck.Arbitrary hiding (vector) ...@@ -56,6 +59,12 @@ import Test.QuickCheck.Arbitrary hiding (vector)
-- Only Hyperdata types should be member of this type class. -- Only Hyperdata types should be member of this type class.
class Hyperdata a class Hyperdata a
type HyperdataC a = ( Hyperdata a
, JSONB a
, ToJSON a
, FromJSON a
, FromField a )
data Chart = data Chart =
CDocsHistogram CDocsHistogram
......
...@@ -16,23 +16,24 @@ module Gargantext.Database.Query.Table.Node.UpdateOpaleye ...@@ -16,23 +16,24 @@ module Gargantext.Database.Query.Table.Node.UpdateOpaleye
where where
import Opaleye import Opaleye
import Data.Aeson (encode, ToJSON) import Data.Aeson (encode)
import Gargantext.Core import Gargantext.Core
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.Database.Schema.Node import Gargantext.Database.Schema.Node
import Gargantext.Database.Admin.Types.Hyperdata
import Gargantext.Database.Admin.Types.Node import Gargantext.Database.Admin.Types.Node
import Gargantext.Database.Prelude (Cmd, mkCmd, JSONB) import Gargantext.Database.Prelude (Cmd, mkCmd)
import Gargantext.Database.Query.Table.Node import Gargantext.Database.Query.Table.Node
import Gargantext.Database.Query.Table.Node.Error import Gargantext.Database.Query.Table.Node.Error
import Debug.Trace (trace) import Debug.Trace (trace)
updateHyperdata :: ToJSON a => NodeId -> a -> Cmd err Int64 updateHyperdata :: HyperdataC a => NodeId -> a -> Cmd err Int64
updateHyperdata i h = mkCmd $ \c -> putStrLn "before runUpdate_" >> updateHyperdata i h = mkCmd $ \c -> putStrLn "before runUpdate_" >>
runUpdate_ c (updateHyperdataQuery i h) >>= \res -> runUpdate_ c (updateHyperdataQuery i h) >>= \res ->
putStrLn "after runUpdate_" >> return res putStrLn "after runUpdate_" >> return res
updateHyperdataQuery :: ToJSON a => NodeId -> a -> Update Int64 updateHyperdataQuery :: HyperdataC a => NodeId -> a -> Update Int64
updateHyperdataQuery i h = seq h' $ trace "updateHyperdataQuery: encoded JSON" $ Update updateHyperdataQuery i h = seq h' $ trace "updateHyperdataQuery: encoded JSON" $ Update
{ uTable = nodeTable { uTable = nodeTable
, uUpdateWith = updateEasy (\ (Node { .. }) , uUpdateWith = updateEasy (\ (Node { .. })
...@@ -46,18 +47,16 @@ updateHyperdataQuery i h = seq h' $ trace "updateHyperdataQuery: encoded JSON" $ ...@@ -46,18 +47,16 @@ updateHyperdataQuery i h = seq h' $ trace "updateHyperdataQuery: encoded JSON" $
---------------------------------------------------------------------------------- ----------------------------------------------------------------------------------
updateNodesWithType :: ( HasNodeError err updateNodesWithType :: ( HasNodeError err
, JSONB a
, ToJSON a
, HasDBid NodeType , HasDBid NodeType
, HyperdataC a
) => NodeType -> proxy a -> (a -> a) -> Cmd err [Int64] ) => NodeType -> proxy a -> (a -> a) -> Cmd err [Int64]
updateNodesWithType nt p f = do updateNodesWithType nt p f = do
ns <- getNodesWithType nt p ns <- getNodesWithType nt p
mapM (\n -> updateHyperdata (_node_id n) (f $ _node_hyperdata n)) ns mapM (\n -> updateHyperdata (_node_id n) (f $ _node_hyperdata n)) ns
updateNodeWithType :: ( HasNodeError err updateNodeWithType :: ( HasNodeError err
, JSONB a
, ToJSON a
, HasDBid NodeType , HasDBid NodeType
, HyperdataC a
) => NodeId ) => NodeId
-> NodeType -> NodeType
-> proxy a -> proxy a
...@@ -70,8 +69,7 @@ updateNodeWithType nId nt p f = do ...@@ -70,8 +69,7 @@ updateNodeWithType nId nt p f = do
-- | In case the Hyperdata Types are not compatible -- | In case the Hyperdata Types are not compatible
updateNodesWithType_ :: ( HasNodeError err updateNodesWithType_ :: ( HasNodeError err
, JSONB a , HyperdataC a
, ToJSON a
, HasDBid NodeType , HasDBid NodeType
) => NodeType -> a -> Cmd err [Int64] ) => NodeType -> a -> Cmd err [Int64]
updateNodesWithType_ nt h = do updateNodesWithType_ nt h = do
......
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