From cdbd499528104733ead1642255cb0d567f25dbe2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Przemys=C5=82aw=20Kaminski?= <pk@intrepidus.pl>
Date: Wed, 18 Dec 2024 08:21:31 +0100
Subject: [PATCH 1/4] [haskell-bee] update haskell-bee dep and other
 dependencies

---
 bin/update-project-dependencies               |  4 +--
 cabal.project                                 | 20 +++--------
 cabal.project.freeze                          | 13 -------
 gargantext.cabal                              | 25 +++++++------
 .../API/Admin/Orchestrator/Types.hs           | 17 +++++----
 src/Gargantext/API/GraphQL/UnPrefix.hs        | 16 ++++-----
 src/Gargantext/API/GraphQL/UserInfo.hs        |  7 ++--
 src/Gargantext/Core/Types/Individu.hs         |  2 ++
 src/Gargantext/Core/Utils/Prefix.hs           |  8 +++--
 .../Database/Admin/Types/Hyperdata/Contact.hs | 24 +++++++------
 .../Database/Admin/Types/Hyperdata/User.hs    | 22 +++++++-----
 src/Gargantext/Database/Query/Join.hs         |  2 +-
 .../Database/Query/Table/ContextNodeNgrams.hs |  4 +--
 .../Query/Table/ContextNodeNgrams2.hs         |  4 +--
 src/Gargantext/Database/Query/Table/Node.hs   |  6 ++--
 .../Query/Table/Node/UpdateOpaleye.hs         |  2 +-
 .../Database/Query/Table/NodeContext.hs       |  6 ++--
 .../Database/Query/Table/NodeNode.hs          |  6 ++--
 src/Gargantext/Database/Schema/User.hs        | 11 +++---
 stack.yaml                                    | 35 +++++++++++++------
 test/Test/Server/ReverseProxy.hs              |  2 +-
 test/drivers/hspec/Main.hs                    |  2 +-
 22 files changed, 125 insertions(+), 113 deletions(-)

diff --git a/bin/update-project-dependencies b/bin/update-project-dependencies
index b758540b..f75d602d 100755
--- a/bin/update-project-dependencies
+++ b/bin/update-project-dependencies
@@ -18,8 +18,8 @@ fi
 # with the `sha256sum` result calculated on the `cabal.project` and
 # `cabal.project.freeze`. This ensures the files stay deterministic so that CI
 # cache can kick in.
-expected_cabal_project_hash="2b63b5dc1e026a27dcce7cb90080802a3a81f6f968d5edf8f913b8f0fd1203eb"
-expected_cabal_project_freeze_hash="0d9d3d92afcaf2a1fbda3fa393a0990f72fc2ec766473aeecd669f7a5d805466"
+expected_cabal_project_hash="118ab88c85b38aa740c0f7a23626262cf1d383c20fc8ca986a462259c519c7e7"
+expected_cabal_project_freeze_hash="da270a3d058342dd52cdb44a6797518ef15029b204a8fc405a41e71c2c204071"
 
 
 cabal --store-dir=$STORE_DIR v2-build --dry-run
diff --git a/cabal.project b/cabal.project
index 9a4c4b15..118ded93 100644
--- a/cabal.project
+++ b/cabal.project
@@ -191,7 +191,10 @@ source-repository-package
 source-repository-package
     type: git
     location: https://gitlab.iscpif.fr/gargantext/haskell-bee
-    tag: d3c0b658aae5dedce04f4f1605e4a6605efebd31
+    tag: 69b7388a62f2afb5cb5609beac96e8cb35e94478
+    subdir: haskell-bee/
+            haskell-bee-pgmq/
+            haskell-bee-tests/
 
 source-repository-package
     type: git
@@ -210,21 +213,8 @@ allow-newer:
            , accelerate-utility:accelerate
            , base:*
            , crawlerHAL:servant
-           -- , crawlerISTEX:servant
-           -- , crawlerPubMed:servant
-           -- , crawlerPubMed:servant-client-core
            , iso639:aeson
            , iso639:text
-           , morpheus-graphql-app:text
-           , morpheus-graphql-client:text
-           , morpheus-graphql-code-gen-utils:text
-           , morpheus-graphql-code-gen:text
-           , morpheus-graphql-core:text
-           , morpheus-graphql-server:text
-           , morpheus-graphql-subscriptions:text
-           , morpheus-graphql:text
-           , servant-client:servant
-           , servant-client:servant-client-core
            , servant-ekg:base
            , servant-ekg:hashable
            , servant-ekg:servant
@@ -236,8 +226,8 @@ allow-newer:
            , stemmer:base
 allow-older: aeson:hashable
            , crawlerHAL:servant-client
-           , haskell-bee:postgresql-libpq
            , haskell-bee:stm
+           , haskell-bee-tests:stm
            , haskell-throttle:time
            , hsparql:rdf4h
 
diff --git a/cabal.project.freeze b/cabal.project.freeze
index bd4e034a..8572b751 100644
--- a/cabal.project.freeze
+++ b/cabal.project.freeze
@@ -340,14 +340,6 @@ constraints: any.Boolean ==0.2.4,
              any.monad-time ==0.4.0.0,
              any.mono-traversable ==1.0.17.0,
              any.monoid-extras ==0.6.3,
-             any.morpheus-graphql ==0.24.3,
-             any.morpheus-graphql-app ==0.24.3,
-             any.morpheus-graphql-client ==0.24.3,
-             any.morpheus-graphql-code-gen ==0.24.3,
-             any.morpheus-graphql-code-gen-utils ==0.24.3,
-             any.morpheus-graphql-core ==0.24.3,
-             any.morpheus-graphql-server ==0.24.3,
-             any.morpheus-graphql-subscriptions ==0.24.3,
              any.mtl ==2.2.2,
              any.mtl-compat ==0.2.2,
              mtl-compat -two-point-one -two-point-two,
@@ -365,7 +357,6 @@ constraints: any.Boolean ==0.2.4,
              any.newtype-generics ==0.6.2,
              any.old-locale ==1.0.0.7,
              any.old-time ==1.1.0.4,
-             any.opaleye ==0.9.7.0,
              any.opaleye-textsearch ==0.2.0.0,
              any.openalex ==0.1.0.0,
              any.optics-core ==0.4.1.1,
@@ -394,9 +385,7 @@ constraints: any.Boolean ==0.2.4,
              any.polyparse ==1.13,
              any.port-utils ==0.2.1.0,
              any.postgres-options ==0.2.2.0,
-             any.postgresql-libpq ==0.9.5.0,
              postgresql-libpq -use-pkg-config,
-             any.postgresql-simple ==0.6.5.1,
              any.pretty ==1.1.3.6,
              any.pretty-show ==1.10,
              any.pretty-simple ==4.1.2.0,
@@ -494,7 +483,6 @@ constraints: any.Boolean ==0.2.4,
              splitmix -optimised-mixer,
              any.statistics ==0.16.2.1,
              any.stemmer ==0.5.2,
-             any.stm ==2.5.1.0,
              any.stm-chans ==3.0.0.9,
              any.stm-containers ==1.2.1,
              any.stm-hamt ==1.2.1,
@@ -586,7 +574,6 @@ constraints: any.Boolean ==0.2.4,
              any.validity ==0.12.1.0,
              any.vault ==0.3.1.5,
              vault +useghc,
-             any.vector ==0.12.3.1,
              vector +boundschecks -internalchecks -unsafechecks -wall,
              any.vector-algorithms ==0.9.0.2,
              vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
diff --git a/gargantext.cabal b/gargantext.cabal
index 2c7ec60d..4c70504f 100644
--- a/gargantext.cabal
+++ b/gargantext.cabal
@@ -528,6 +528,7 @@ library
     , gargantext-prelude
     , graphviz ^>= 2999.20.1.0
     , haskell-bee
+    , haskell-bee-pgmq
     , haskell-igraph ^>= 0.10.4
     , haskell-pgmq >= 0.1.0.0 && < 0.2
     , haskell-throttle
@@ -553,15 +554,15 @@ library
     , mime-mail >= 0.5.1
     , monad-control ^>= 1.0.3.1
     , monad-logger ^>= 0.3.36
-    , morpheus-graphql >= 0.24.3 && < 0.25
-    , morpheus-graphql-app >= 0.24.3 && < 0.25
-    , morpheus-graphql-server >= 0.24.3 && < 0.25
-    , morpheus-graphql-subscriptions >= 0.24.3 && < 0.25
+    , morpheus-graphql >= 0.24.3 && < 0.28.1
+    , morpheus-graphql-app >= 0.24.3 && < 0.28.1
+    , morpheus-graphql-server >= 0.24.3 && < 0.28.1
+    , morpheus-graphql-subscriptions >= 0.24.3 && < 0.28.1
     , mtl ^>= 2.2.2
     , nanomsg-haskell >= 0.2.4 && < 0.3
     , network >= 3.1.4.0
     , network-uri ^>= 2.6.4.1
-    , opaleye ^>= 0.9.6.1
+    , opaleye >= 0.9.6.1 && <= 0.10.3.1
     , opaleye-textsearch >= 0.2.0.0
     , openalex
     , openapi3 >= 3.2.3
@@ -569,7 +570,7 @@ library
     , parsec ^>= 3.1.16.1
     , patches-class ^>= 0.1.0.1
     , patches-map ^>= 0.1.0.1
-    , postgresql-simple ^>= 0.6.4
+    , postgresql-simple >= 0.6.4 && <= 0.7.0.0
     , process ^>= 1.6.18.0
     , product-profunctors ^>= 0.11.0.3
     , protolude ^>= 0.3.3
@@ -625,7 +626,7 @@ library
     , utf8-string ^>= 1.0.2
     , uuid ^>= 1.3.15
     , validity ^>= 0.12.0.2
-    , vector ^>= 0.12.3.0
+    , vector >= 0.12.3.0 && <= 0.13.1.0
     , wai >= 3.2.4
     , wai-cors ^>= 0.2.7
     , wai-extra ^>= 3.1.8
@@ -677,6 +678,7 @@ executable gargantext
     , gargantext
     , gargantext-prelude
     , haskell-bee
+    , haskell-bee-pgmq
     , ini ^>= 0.4.1
     , lens >= 5.2.2 && < 5.3
     , MonadRandom ^>= 0.6
@@ -684,7 +686,7 @@ executable gargantext
     , optparse-applicative
     , optparse-generic ^>= 1.4.7
     , parallel ^>= 3.2.2.0
-    , postgresql-simple ^>= 0.6.4
+    , postgresql-simple >= 0.6.4 && <= 0.7.0.0
     , protolude ^>= 0.3.3
     , servant >= 0.20.1 && < 0.21
     , servant-auth
@@ -698,7 +700,7 @@ executable gargantext
     , toml-parser >= 2.0.1.0 && < 3
     , tree-diff
     , unordered-containers ^>= 0.2.16.0
-    , vector ^>= 0.12.3.0
+    , vector >= 0.12.3.0 && <= 0.13.1.0
   ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wmissing-signatures -Wunused-binds -Wunused-imports -Werror -freduction-depth=300 -fprint-potential-instances
 
 common testDependencies
@@ -728,6 +730,7 @@ common testDependencies
     , generic-arbitrary >= 1.0.1 && < 2
     , graphviz ^>= 2999.20.1.0
     , haskell-bee
+    , haskell-bee-pgmq
     , hspec ^>= 2.11.1
     , hspec-core
     , hspec-expectations >= 0.8 && < 0.9
@@ -747,7 +750,7 @@ common testDependencies
     , patches-class ^>= 0.1.0.1
     , patches-map ^>= 0.1.0.1
     , postgres-options >= 0.2 && < 0.3
-    , postgresql-simple >= 0.6.4 && < 0.7
+    , postgresql-simple >= 0.6.4 && <= 0.7.0.0
     , pretty ^>= 1.1.3.6
     , process ^>= 1.6.18.0
     , protolude ^>= 0.3.3
@@ -783,7 +786,7 @@ common testDependencies
     , unordered-containers ^>= 0.2.16.0
     , utf8-string ^>= 1.0.2
     , validity ^>= 0.12.0.2
-    , vector ^>= 0.12.3.0
+    , vector >= 0.12.3.0 && <= 0.13.1.0
     , wai
     , wai-extra
     , warp
diff --git a/src/Gargantext/API/Admin/Orchestrator/Types.hs b/src/Gargantext/API/Admin/Orchestrator/Types.hs
index c9dae78f..55165470 100644
--- a/src/Gargantext/API/Admin/Orchestrator/Types.hs
+++ b/src/Gargantext/API/Admin/Orchestrator/Types.hs
@@ -18,11 +18,12 @@ module Gargantext.API.Admin.Orchestrator.Types
   where
 
 import Data.Aeson (genericParseJSON, genericToJSON)
-import Data.Morpheus.Types ( GQLType, typeOptions )
+import Data.Morpheus.Types ( GQLType, VisitType(visitFieldNames) )
 import Data.Swagger (ToSchema, URL, declareNamedSchema, defaultSchemaOptions, genericDeclareNamedSchemaUnrestricted)
-import Gargantext.API.GraphQL.UnPrefix qualified as GQLU
+-- import Gargantext.API.GraphQL.UnPrefix qualified as GQLU
 import Gargantext.Core.Types (TODO(..))
 import Gargantext.Core.Utils.Aeson (jsonOptions)
+import Gargantext.Core.Utils.Prefix (dropPrefixT)
 import Gargantext.Prelude
 import Test.QuickCheck (elements)
 import Test.QuickCheck.Arbitrary
@@ -74,8 +75,9 @@ instance ToJSON ScraperEvent where
 instance FromJSON ScraperEvent where
   parseJSON = genericParseJSON $ jsonOptions "_scev_"
 instance ToSchema ScraperEvent  -- TODO _scev_ prefix
-instance GQLType ScraperEvent where
-  typeOptions _ = GQLU.unPrefix "_scev_"
+instance GQLType ScraperEvent
+instance VisitType ScraperEvent where
+  visitFieldNames _ = dropPrefixT "_scev_"
 
 
 data JobLog = JobLog
@@ -102,6 +104,7 @@ instance ToJSON JobLog where
 instance FromJSON JobLog where
   parseJSON = genericParseJSON $ jsonOptions "_scst_"
 instance ToSchema JobLog -- TODO _scst_ prefix
-instance GQLType JobLog where
-  typeOptions _ = GQLU.unPrefix "_scst_"
-
+instance GQLType JobLog
+--   typeOptions _ = GQLU.unPrefix "_scst_"
+instance VisitType JobLog where
+  visitFieldNames _ = dropPrefixT "_scst_"
diff --git a/src/Gargantext/API/GraphQL/UnPrefix.hs b/src/Gargantext/API/GraphQL/UnPrefix.hs
index cffca021..27c4e617 100644
--- a/src/Gargantext/API/GraphQL/UnPrefix.hs
+++ b/src/Gargantext/API/GraphQL/UnPrefix.hs
@@ -12,12 +12,12 @@ Portability : POSIX
 
 module Gargantext.API.GraphQL.UnPrefix where
 
-import Data.Morpheus.Types (GQLTypeOptions, fieldLabelModifier)
-import Data.Text qualified as T
-import Gargantext.Core.Utils.Prefix (unCapitalize, dropPrefix)
-import Gargantext.Prelude
+-- import Data.Morpheus.Types (GQLTypeOptions, fieldLabelModifier)
+-- import Data.Text qualified as T
+-- import Gargantext.Core.Utils.Prefix (unCapitalize, dropPrefix)
+-- import Gargantext.Prelude
 
-unPrefix :: T.Text -> GQLTypeOptions -> GQLTypeOptions
-unPrefix prefix options = options { fieldLabelModifier = nflm }
-  where
-    nflm label = unCapitalize $ dropPrefix (T.unpack prefix) $ ( fieldLabelModifier options ) label
+-- unPrefix :: T.Text -> GQLTypeOptions -> GQLTypeOptions
+-- unPrefix prefix options = options { fieldLabelModifier = nflm }
+--   where
+--     nflm label = unCapitalize $ dropPrefix (T.unpack prefix) $ ( fieldLabelModifier options ) label
diff --git a/src/Gargantext/API/GraphQL/UserInfo.hs b/src/Gargantext/API/GraphQL/UserInfo.hs
index 5fc7179d..e47ec7a4 100644
--- a/src/Gargantext/API/GraphQL/UserInfo.hs
+++ b/src/Gargantext/API/GraphQL/UserInfo.hs
@@ -15,7 +15,7 @@ Portability : POSIX
 module Gargantext.API.GraphQL.UserInfo where
 
 import Control.Lens
-import Data.Morpheus.Types ( GQLType, description )
+import Data.Morpheus.Types ( GQLType, VisitType(visitTypeDescription) )
 import Data.Text qualified as T
 import Gargantext.Database.Admin.Types.Hyperdata
   ( HyperdataUser(..)
@@ -75,8 +75,9 @@ data UserInfo = UserInfo
   , ui_cwDescription  :: Maybe Text
   }
   deriving (Generic, Show)
-instance GQLType UserInfo where
-  description = const $ Just "provides user info"
+instance GQLType UserInfo
+instance VisitType UserInfo where
+  visitTypeDescription _ = const $ Just "provides user info"
 
 -- | Arguments to the "user info" query.
 data UserInfoArgs
diff --git a/src/Gargantext/Core/Types/Individu.hs b/src/Gargantext/Core/Types/Individu.hs
index 4112cbb4..ee921ab8 100644
--- a/src/Gargantext/Core/Types/Individu.hs
+++ b/src/Gargantext/Core/Types/Individu.hs
@@ -19,6 +19,7 @@ module Gargantext.Core.Types.Individu
   where
 
 import Data.Aeson
+import Data.Morpheus.Types (GQLType)
 import Data.Swagger
 import Data.Text (pack, reverse)
 import Data.Text qualified as T
@@ -45,6 +46,7 @@ type Username = Text
 type HashPassword    = Auth.PasswordHash Auth.Argon2
 newtype GargPassword = GargPassword Text
   deriving (Generic)
+instance GQLType GargPassword
 
 toGargPassword :: Text -> GargPassword
 toGargPassword x = GargPassword x
diff --git a/src/Gargantext/Core/Utils/Prefix.hs b/src/Gargantext/Core/Utils/Prefix.hs
index fd85e9a6..a1a84b2c 100644
--- a/src/Gargantext/Core/Utils/Prefix.hs
+++ b/src/Gargantext/Core/Utils/Prefix.hs
@@ -16,13 +16,14 @@ module Gargantext.Core.Utils.Prefix
   ( module Gargantext.Core.Utils.Prefix
   ) where
 
-import Prelude
-
 import Data.Aeson (Value, defaultOptions, parseJSON)
 import Data.Aeson.TH (Options, fieldLabelModifier, omitNothingFields, sumEncoding, SumEncoding(UntaggedValue))
 import Data.Aeson.Types (Parser)
 import Data.Char (toLower)
+import Data.Maybe (fromMaybe)
 import Data.Swagger.SchemaOptions (SchemaOptions, fromAesonOptions)
+import Data.Text qualified as T
+import Prelude
 import Text.Read (readMaybe)
 
 
@@ -64,3 +65,6 @@ parseJSONFromString v = do
   case readMaybe (numString :: String) of
     Nothing -> fail $ "Invalid number for TransactionID: " ++ show v -- TODO error message too specific
     Just n -> pure n
+
+dropPrefixT :: T.Text -> T.Text -> T.Text
+dropPrefixT prefix input = fromMaybe input (T.stripPrefix prefix input)
diff --git a/src/Gargantext/Database/Admin/Types/Hyperdata/Contact.hs b/src/Gargantext/Database/Admin/Types/Hyperdata/Contact.hs
index 44b8e70c..9d36dfdf 100644
--- a/src/Gargantext/Database/Admin/Types/Hyperdata/Contact.hs
+++ b/src/Gargantext/Database/Admin/Types/Hyperdata/Contact.hs
@@ -19,10 +19,10 @@ Portability : POSIX
 module Gargantext.Database.Admin.Types.Hyperdata.Contact
   where
 
-import Data.Morpheus.Types (GQLType(..))
+import Data.Morpheus.Types (GQLType, VisitType(visitFieldNames))
 import Data.Time.Segment (jour)
-import Gargantext.API.GraphQL.UnPrefix qualified as GAGU
 import Gargantext.Core.Text (HasText(..))
+import Gargantext.Core.Utils.Prefix (dropPrefixT)
 import Gargantext.Database.Admin.Types.Hyperdata.Prelude
 import Gargantext.Prelude
 import Gargantext.Utils.UTCTime ( NUTCTime(..) )
@@ -37,8 +37,9 @@ data HyperdataContact =
                    , _hc_lastValidation  :: Maybe Text -- TODO UTCTime
   } deriving (Eq, Show, Generic)
 
-instance GQLType HyperdataContact where
-  typeOptions _ = GAGU.unPrefix "_hc_"
+instance GQLType HyperdataContact
+instance VisitType HyperdataContact where
+  visitFieldNames _ = dropPrefixT "_hc_"
 
 instance HasText HyperdataContact
   where
@@ -93,8 +94,9 @@ data ContactWho =
              , _cw_description :: Maybe Text
   } deriving (Eq, Show, Generic)
 
-instance GQLType ContactWho where
-  typeOptions _ = GAGU.unPrefix "_cw_"
+instance GQLType ContactWho
+instance VisitType ContactWho where
+  visitFieldNames _ = dropPrefixT "_cw_"
 
 type FirstName = Text
 type LastName  = Text
@@ -127,8 +129,9 @@ data ContactWhere =
                , _cw_exit         :: Maybe NUTCTime
   } deriving (Eq, Show, Generic)
 
-instance GQLType ContactWhere where
-  typeOptions _ = GAGU.unPrefix "_cw_"
+instance GQLType ContactWhere
+instance VisitType ContactWhere where
+  visitFieldNames _ = dropPrefixT "_cw_"
 
 defaultContactWhere :: ContactWhere
 defaultContactWhere =
@@ -149,8 +152,9 @@ data ContactTouch =
                   , _ct_url       :: Maybe Text
   } deriving (Eq, Show, Generic)
 
-instance GQLType ContactTouch where
-  typeOptions _ = GAGU.unPrefix "_ct_"
+instance GQLType ContactTouch
+instance VisitType ContactTouch where
+  visitFieldNames _ = dropPrefixT "_ct_"
 
 defaultContactTouch :: ContactTouch
 defaultContactTouch =
diff --git a/src/Gargantext/Database/Admin/Types/Hyperdata/User.hs b/src/Gargantext/Database/Admin/Types/Hyperdata/User.hs
index b45ba38f..7a9566ab 100644
--- a/src/Gargantext/Database/Admin/Types/Hyperdata/User.hs
+++ b/src/Gargantext/Database/Admin/Types/Hyperdata/User.hs
@@ -18,9 +18,9 @@ Portability : POSIX
 module Gargantext.Database.Admin.Types.Hyperdata.User
   where
 
-import Data.Morpheus.Types (GQLType(typeOptions))
-import qualified Gargantext.API.GraphQL.UnPrefix as GAGU
+import Data.Morpheus.Types (GQLType, VisitType(visitFieldNames))
 import Gargantext.Core (Lang(..))
+import Gargantext.Core.Utils.Prefix (dropPrefixT)
 import Gargantext.Database.Admin.Types.Hyperdata.Prelude
 import Gargantext.Database.Admin.Types.Hyperdata.Contact
 import Gargantext.Database.Admin.Types.Node (DocumentId)
@@ -38,17 +38,20 @@ data HyperdataUser =
                    , _hu_epo_api_token  :: !(Maybe Text)
                    } deriving (Eq, Show, Generic)
 
-instance GQLType HyperdataUser where
-  typeOptions _ = GAGU.unPrefix "_hu_"
+instance GQLType HyperdataUser
+instance VisitType HyperdataUser where
+  visitFieldNames _ = dropPrefixT "_hu_"
 
 data HyperdataPrivate =
      HyperdataPrivate { _hpr_password :: !Text
                       , _hpr_lang     :: !Lang
                       }
-     deriving (Eq, Show, Generic)
+     deriving (Eq, Show, Generic, GQLType)
 
-instance GQLType HyperdataPrivate where
-  typeOptions _ = GAGU.unPrefix "_hpr_"
+-- instance GQLType HyperdataPrivate where
+--   typeOptions _ = GAGU.unPrefix "_hpr_"
+instance VisitType HyperdataPrivate where
+  visitFieldNames _ = dropPrefixT "_hpr_"
 
 
 data HyperdataPublic =
@@ -57,8 +60,9 @@ data HyperdataPublic =
                      }
      deriving (Eq, Show, Generic)
 
-instance GQLType HyperdataPublic where
-  typeOptions _ = GAGU.unPrefix "_hpu_"
+instance GQLType HyperdataPublic
+instance VisitType HyperdataPublic where
+  visitFieldNames _ = dropPrefixT "_hpu_"
 
 -- | Default
 defaultHyperdataUser :: HyperdataUser
diff --git a/src/Gargantext/Database/Query/Join.hs b/src/Gargantext/Database/Query/Join.hs
index 4075d371..3c689154 100644
--- a/src/Gargantext/Database/Query/Join.hs
+++ b/src/Gargantext/Database/Query/Join.hs
@@ -32,7 +32,7 @@ module Gargantext.Database.Query.Join ( leftJoin2
 import Control.Arrow ((>>>), returnA)
 import Data.Profunctor.Product.Default ( Default )
 import Gargantext.Prelude ( Applicative((<*>)), (<$>) )
-import Opaleye hiding (keepWhen)
+import Opaleye
 import Opaleye.Internal.Join (NullMaker(..))
 
 
diff --git a/src/Gargantext/Database/Query/Table/ContextNodeNgrams.hs b/src/Gargantext/Database/Query/Table/ContextNodeNgrams.hs
index b884e7dc..7cc2054e 100644
--- a/src/Gargantext/Database/Query/Table/ContextNodeNgrams.hs
+++ b/src/Gargantext/Database/Query/Table/ContextNodeNgrams.hs
@@ -41,10 +41,10 @@ insertContextNodeNgrams = insertContextNodeNgramsW
 
 insertContextNodeNgramsW :: [ContextNodeNgramsWrite] -> DBCmd err Int
 insertContextNodeNgramsW nnnw =
-  mkCmd $ \c -> fromIntegral <$> runInsert_ c insertNothing
+  mkCmd $ \c -> fromIntegral <$> runInsert c insertNothing
     where
       insertNothing = Insert { iTable = contextNodeNgramsTable
                              , iRows  = nnnw
                              , iReturning = rCount
-                             , iOnConflict = Just DoNothing
+                             , iOnConflict = Just doNothing
                              }
diff --git a/src/Gargantext/Database/Query/Table/ContextNodeNgrams2.hs b/src/Gargantext/Database/Query/Table/ContextNodeNgrams2.hs
index c82bc4bf..4b81b11f 100644
--- a/src/Gargantext/Database/Query/Table/ContextNodeNgrams2.hs
+++ b/src/Gargantext/Database/Query/Table/ContextNodeNgrams2.hs
@@ -37,10 +37,10 @@ insertContextNodeNgrams2 = insertContextNodeNgrams2W
 
 insertContextNodeNgrams2W :: [ContextNodeNgrams2Write] -> DBCmd err Int
 insertContextNodeNgrams2W nnnw =
-  mkCmd $ \c -> fromIntegral <$> runInsert_ c insertNothing
+  mkCmd $ \c -> fromIntegral <$> runInsert c insertNothing
     where
       insertNothing = Insert { iTable = contextNodeNgrams2Table
                               , iRows  = nnnw
                               , iReturning = rCount
-                              , iOnConflict = (Just DoNothing)
+                              , iOnConflict = (Just doNothing)
                               }
diff --git a/src/Gargantext/Database/Query/Table/Node.hs b/src/Gargantext/Database/Query/Table/Node.hs
index 7e39bd72..ff6c5a91 100644
--- a/src/Gargantext/Database/Query/Table/Node.hs
+++ b/src/Gargantext/Database/Query/Table/Node.hs
@@ -130,7 +130,7 @@ selectNodesWith' parentId maybeNodeType = proc () -> do
 
 deleteNode :: NodeId -> DBCmd err Int
 deleteNode n = mkCmd $ \conn ->
-  fromIntegral <$> runDelete_ conn
+  fromIntegral <$> runDelete conn
                  (Delete nodeTable
                          (\(Node n_id _ _ _ _ _ _ _) -> n_id .== pgNodeId n)
                          rCount
@@ -138,7 +138,7 @@ deleteNode n = mkCmd $ \conn ->
 
 deleteNodes :: [NodeId] -> DBCmd err Int
 deleteNodes ns = mkCmd $ \conn ->
-  fromIntegral <$> runDelete_ conn
+  fromIntegral <$> runDelete conn
                    (Delete nodeTable
                            (\(Node n_id _ _ _ _ _ _ _) -> in_ ((map pgNodeId ns)) n_id)
                            rCount
@@ -380,7 +380,7 @@ node nodeType name hyperData parentId userId =
                   -------------------------------
 insertNodesR :: [NodeWrite] -> DBCmd err [NodeId]
 insertNodesR ns = mkCmd $ \conn ->
-  runInsert_ conn (Insert nodeTable ns (rReturning (\(Node i _ _ _ _ _ _ _) -> i)) Nothing)
+  runInsert conn (Insert nodeTable ns (rReturning (\(Node i _ _ _ _ _ _ _) -> i)) Nothing)
 
 insertNodesWithParentR :: Maybe ParentId -> [NodeWrite] -> DBCmd err [NodeId]
 insertNodesWithParentR pid ns = insertNodesR (set node_parent_id (pgNodeId <$> pid) <$> ns)
diff --git a/src/Gargantext/Database/Query/Table/Node/UpdateOpaleye.hs b/src/Gargantext/Database/Query/Table/Node/UpdateOpaleye.hs
index b21d7033..274262ba 100644
--- a/src/Gargantext/Database/Query/Table/Node/UpdateOpaleye.hs
+++ b/src/Gargantext/Database/Query/Table/Node/UpdateOpaleye.hs
@@ -31,7 +31,7 @@ updateHyperdata i h = do
   mkCmd $ \c -> do
     -- res <- withLogger () $ \ioLogger -> do
       -- logMsg ioLogger DEBUG "[updateHyperdata] before runUpdate_"
-      res <- runUpdate_ c $ updateHyperdataQuery i h
+      res <- runUpdate c $ updateHyperdataQuery i h
       -- logMsg ioLogger DEBUG $ "[updateHyperdata] after runUpdate_: " <> show res
       pure res
     -- withLogger () $ \ioLogger -> do
diff --git a/src/Gargantext/Database/Query/Table/NodeContext.hs b/src/Gargantext/Database/Query/Table/NodeContext.hs
index 8ffdfa03..c5052a64 100644
--- a/src/Gargantext/Database/Query/Table/NodeContext.hs
+++ b/src/Gargantext/Database/Query/Table/NodeContext.hs
@@ -299,8 +299,8 @@ getContextNgramsMatchingFTS contextId listId = do
                   OR contexts.search @@ plainto_tsquery('french', ngrams.terms)) |]
 ------------------------------------------------------------------------
 insertNodeContext :: [NodeContext] -> DBCmd err Int
-insertNodeContext ns = mkCmd $ \conn -> fromIntegral <$> (runInsert_ conn
-                          $ Insert nodeContextTable ns' rCount (Just DoNothing))
+insertNodeContext ns = mkCmd $ \conn -> fromIntegral <$> (runInsert conn
+                          $ Insert nodeContextTable ns' rCount (Just doNothing))
   where
     ns' :: [NodeContextWrite]
     ns' = map (\(NodeContext i n c x y)
@@ -318,7 +318,7 @@ type Context_Id = NodeId
 
 deleteNodeContext :: Node_Id -> Context_Id -> DBCmd err Int
 deleteNodeContext n c = mkCmd $ \conn ->
-  fromIntegral <$> runDelete_ conn
+  fromIntegral <$> runDelete conn
                               (Delete nodeContextTable
                                       (\(NodeContext _ n_id c_id _ _) -> n_id .== pgNodeId n
                                                                    .&& c_id .== pgNodeId c
diff --git a/src/Gargantext/Database/Query/Table/NodeNode.hs b/src/Gargantext/Database/Query/Table/NodeNode.hs
index da796625..d272eda9 100644
--- a/src/Gargantext/Database/Query/Table/NodeNode.hs
+++ b/src/Gargantext/Database/Query/Table/NodeNode.hs
@@ -127,8 +127,8 @@ getNodeNodeWith pId _ maybeNodeType = runOpaQuery query
 -- the share being created is valid. Use the other functions like
 -- 'shareNode', 'publishNode', or roll your own.
 insertNodeNode :: [NodeNode] -> DBCmd err Int
-insertNodeNode ns = mkCmd $ \conn -> fromIntegral <$> (runInsert_ conn
-                          $ Insert nodeNodeTable ns' rCount (Just DoNothing))
+insertNodeNode ns = mkCmd $ \conn -> fromIntegral <$> (runInsert conn
+                          $ Insert nodeNodeTable ns' rCount (Just doNothing))
   where
     ns' :: [NodeNodeWrite]
     ns' = map (\(NodeNode n1 n2 x y)
@@ -146,7 +146,7 @@ type Node2_Id = NodeId
 
 deleteNodeNode :: Node1_Id -> Node2_Id -> DBCmd err Int
 deleteNodeNode n1 n2 = mkCmd $ \conn ->
-  fromIntegral <$> runDelete_ conn
+  fromIntegral <$> runDelete conn
                   (Delete nodeNodeTable
                           (\(NodeNode n1_id n2_id _ _) -> n1_id .== pgNodeId n1
                                                       .&& n2_id .== pgNodeId n2
diff --git a/src/Gargantext/Database/Schema/User.hs b/src/Gargantext/Database/Schema/User.hs
index 2b17f730..35201d0d 100644
--- a/src/Gargantext/Database/Schema/User.hs
+++ b/src/Gargantext/Database/Schema/User.hs
@@ -19,12 +19,12 @@ Functions to deal with users, database side.
 
 module Gargantext.Database.Schema.User where
 
-import Data.Morpheus.Types (GQLType(typeOptions))
+import Data.Morpheus.Types (GQLType, VisitType(visitFieldNames))
 import Data.Time (UTCTime)
 import Database.PostgreSQL.Simple.FromField (FromField, fromField)
-import Gargantext.API.GraphQL.UnPrefix qualified as GAGU
+-- import Gargantext.API.GraphQL.UnPrefix qualified as GAGU
 import Gargantext.Core.Types.Individu (GargPassword, toGargPassword)
-import Gargantext.Core.Utils.Prefix (unPrefix)
+import Gargantext.Core.Utils.Prefix (unPrefix, dropPrefixT)
 import Gargantext.Database.Prelude (fromField')
 import Gargantext.Prelude
 
@@ -44,8 +44,9 @@ data UserLight = UserLight { userLight_id                   :: !UserId
                            , userLight_password             :: !GargPassword
                            , userLight_forgot_password_uuid :: !(Maybe Text)
                            } deriving (Show, Generic)
-instance GQLType UserLight where
-  typeOptions _ = GAGU.unPrefix "userLight_"
+instance GQLType UserLight
+instance VisitType UserLight where
+  visitFieldNames _ = dropPrefixT "userLight_"
 
 toUserLight :: UserDB -> UserLight
 toUserLight (UserDB { user_id
diff --git a/stack.yaml b/stack.yaml
index af1158f1..b460cecd 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -71,26 +71,31 @@
 - "microlens-th-0.4.3.15"
 - "mono-traversable-1.0.17.0"
 - "monoid-extras-0.6.3"
-- "morpheus-graphql-0.24.3"
-- "morpheus-graphql-app-0.24.3"
-- "morpheus-graphql-client-0.24.3"
-- "morpheus-graphql-code-gen-0.24.3"
-- "morpheus-graphql-code-gen-utils-0.24.3"
-- "morpheus-graphql-core-0.24.3"
-- "morpheus-graphql-server-0.24.3"
-- "morpheus-graphql-subscriptions-0.24.3"
+- "morpheus-graphql-0.28.0"
+- "morpheus-graphql-app-0.28.0"
+- "morpheus-graphql-client-0.28.1"
+- "morpheus-graphql-code-gen-0.28.1"
+- "morpheus-graphql-code-gen-utils-0.28.1"
+- "morpheus-graphql-core-0.28.1"
+- "morpheus-graphql-server-0.28.0"
+- "morpheus-graphql-subscriptions-0.28.0"
 - "mwc-random-0.15.1.0"
 - "network-control-0.0.2"
+- "opaleye-0.10.3.1"
 - "ordered-containers-0.2.4"
 - "os-string-2.0.6"
 - "password-3.0.4.0"
 - "postgres-options-0.2.2.0"
+- "postgresql-libpq-0.10.2.0"
+- "postgresql-libpq-configure-0.10.0.1"
+- "postgresql-simple-0.7.0.0"
 - "primitive-0.7.4.0"
 - "primitive-extras-0.10.2"
 - "primitive-unlifted-2.1.0.0"
 - "protolude-0.3.4"
 - "rake-0.0.1"
 - "random-1.2.1.2"
+- "random-strings-0.1.1.0"
 - "recover-rtti-0.4.3"
 - "reflection-2.1.8"
 - "resourcet-1.3.0"
@@ -137,8 +142,8 @@
 - "uuid-1.3.16"
 - "uuid-types-1.0.6"
 - "validity-0.12.1.0"
-- "vector-0.12.3.1"
 - "vector-algorithms-0.9.0.2"
+- "vector-stream-0.1.0.1"
 - "wai-app-static-3.1.9"
 - "wai-extra-3.1.15"
 - "wai-logger-2.4.1"
@@ -256,10 +261,18 @@
   git: "https://gitlab.iscpif.fr/gargantext/gargantext-graph.git"
   subdirs:
   - .
-- commit: d3c0b658aae5dedce04f4f1605e4a6605efebd31
+- commit: 69b7388a62f2afb5cb5609beac96e8cb35e94478
   git: "https://gitlab.iscpif.fr/gargantext/haskell-bee"
   subdirs:
-  - .
+  - "haskell-bee-pgmq/"
+- commit: 69b7388a62f2afb5cb5609beac96e8cb35e94478
+  git: "https://gitlab.iscpif.fr/gargantext/haskell-bee"
+  subdirs:
+  - "haskell-bee-tests/"
+- commit: 69b7388a62f2afb5cb5609beac96e8cb35e94478
+  git: "https://gitlab.iscpif.fr/gargantext/haskell-bee"
+  subdirs:
+  - "haskell-bee/"
 - commit: bb15d828d5ef36eeaa84cccb00598b585048c88e
   git: "https://gitlab.iscpif.fr/gargantext/haskell-gargantext-prelude"
   subdirs:
diff --git a/test/Test/Server/ReverseProxy.hs b/test/Test/Server/ReverseProxy.hs
index c6299d2b..6d7dc9e5 100644
--- a/test/Test/Server/ReverseProxy.hs
+++ b/test/Test/Server/ReverseProxy.hs
@@ -27,7 +27,7 @@ tests = describe "Microservices proxy" $ do
   writeFrameTests
 
 writeFrameTests :: Spec
-writeFrameTests = parallel $ aroundAll withBackendServerAndProxy $ beforeAllWith (\ctx@(testEnv, _, _) -> setupEnvironment testEnv >>= (const $ pure ctx)) $ do
+writeFrameTests = sequential $ aroundAll withBackendServerAndProxy $ beforeAllWith (\ctx@(testEnv, _, _) -> setupEnvironment testEnv >>= (const $ pure ctx)) $ do
   describe "Write Frame Reverse Proxy" $ do
     it "should disallow unauthenticated requests" $ \(_testEnv, _serverPort, proxyPort) -> do
       baseUrl <- parseBaseUrl "http://localhost"
diff --git a/test/drivers/hspec/Main.hs b/test/drivers/hspec/Main.hs
index 995facc2..b68abe19 100644
--- a/test/drivers/hspec/Main.hs
+++ b/test/drivers/hspec/Main.hs
@@ -57,7 +57,7 @@ main = do
   hSetBuffering stdout NoBuffering
   -- TODO Ideally remove start/stop notifications and use
   -- Test/API/Setup to initialize this in env
-  bracket startCoreNLPServer stopCoreNLPServer $ \_ -> hspec $ do
+  bracket startCoreNLPServer stopCoreNLPServer $ \_ -> hspec $ sequential $ do
       API.tests
       ReverseProxy.tests
       DB.tests
-- 
2.21.0


From edeb8046bd6a85a93e60a3e21cbd1cc30d4ce4ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Przemys=C5=82aw=20Kaminski?= <pk@intrepidus.pl>
Date: Wed, 18 Dec 2024 20:19:09 +0100
Subject: [PATCH 2/4] [refactor] remove unused dependencies

---
 cabal.project.local_toCopy |  2 +-
 gargantext.cabal           | 57 ++++++++++++--------------------------
 stack.yaml                 |  1 -
 3 files changed, 19 insertions(+), 41 deletions(-)

diff --git a/cabal.project.local_toCopy b/cabal.project.local_toCopy
index a4d4a0a4..06831aac 100644
--- a/cabal.project.local_toCopy
+++ b/cabal.project.local_toCopy
@@ -1,5 +1,5 @@
 package gargantext
-    ghc-options: -fwrite-ide-info
+    ghc-options: -fwrite-ide-info -Wunused-packages
 
 package gargantext-admin
     ghc-options: -O0
diff --git a/gargantext.cabal b/gargantext.cabal
index 4c70504f..796da5db 100644
--- a/gargantext.cabal
+++ b/gargantext.cabal
@@ -670,7 +670,6 @@ executable gargantext
     , aeson-pretty
     , async ^>= 2.2.4
     , bytestring ^>= 0.11.5.3
-    , cassava ^>= 0.5.2.0
     , containers ^>= 0.6.7
     , cryptohash ^>= 0.11.9
     , directory ^>= 1.3.7.1
@@ -678,16 +677,10 @@ executable gargantext
     , gargantext
     , gargantext-prelude
     , haskell-bee
-    , haskell-bee-pgmq
-    , ini ^>= 0.4.1
-    , lens >= 5.2.2 && < 5.3
     , MonadRandom ^>= 0.6
     , monad-logger ^>= 0.3.36
     , optparse-applicative
-    , optparse-generic ^>= 1.4.7
-    , parallel ^>= 3.2.2.0
     , postgresql-simple >= 0.6.4 && <= 0.7.0.0
-    , protolude ^>= 0.3.3
     , servant >= 0.20.1 && < 0.21
     , servant-auth
     , servant-client-core >= 0.20 && < 0.21
@@ -696,10 +689,8 @@ executable gargantext
     , shelly
     , split ^>= 0.2.3.4
     , text ^>= 2.0.2
-    , time ^>= 1.12.2
     , toml-parser >= 2.0.1.0 && < 3
     , tree-diff
-    , unordered-containers ^>= 0.2.16.0
     , vector >= 0.12.3.0 && <= 0.13.1.0
   ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wmissing-signatures -Wunused-binds -Wunused-imports -Werror -freduction-depth=300 -fprint-potential-instances
 
@@ -708,36 +699,24 @@ common testDependencies
       base >=4.7 && <5
     , QuickCheck ^>= 2.14.2
     , aeson ^>= 2.1.2.1
-    , aeson-pretty ^>= 0.8.9
     , aeson-qq
     , async ^>= 2.2.4
-    , boolexpr ^>= 0.3
     , bytestring ^>= 0.11.5.3
     , cache >= 0.1.3.0
-    , case-insensitive
-    , conduit ^>= 1.3.4.2
     , containers ^>= 0.6.7
-    , crawlerArxiv
-    , cryptohash
-    , directory ^>= 1.3.7.1
     , epo-api-client
-    , extra ^>= 1.7.9
     , fast-logger ^>= 3.2.2
     , filepath ^>= 1.4.2.2
     , fmt
     , gargantext
     , gargantext-prelude
     , generic-arbitrary >= 1.0.1 && < 2
-    , graphviz ^>= 2999.20.1.0
     , haskell-bee
-    , haskell-bee-pgmq
     , hspec ^>= 2.11.1
-    , hspec-core
     , hspec-expectations >= 0.8 && < 0.9
     , hspec-expectations-lifted < 0.11
     , hspec-wai
     , hspec-wai-json
-    , http-api-data >= 0.5 && < 0.6
     , http-client ^>= 0.7.14
     -- important: 0.3.6.1 uses cryptonite, while > uses crypton
     , http-client-tls == 0.3.6.1
@@ -751,42 +730,24 @@ common testDependencies
     , patches-map ^>= 0.1.0.1
     , postgres-options >= 0.2 && < 0.3
     , postgresql-simple >= 0.6.4 && <= 0.7.0.0
-    , pretty ^>= 1.1.3.6
-    , process ^>= 1.6.18.0
-    , protolude ^>= 0.3.3
     , quickcheck-instances ^>= 0.3.25.2
     , raw-strings-qq
-    , recover-rtti >= 0.4 && < 0.5
     , resource-pool >= 0.4.0.0 && < 0.5
     , safe-exceptions >= 0.1.7.4 && < 0.2
-    , servant-auth
-    , servant-auth
     , servant-auth-client
     , servant-client >= 0.20 && < 0.21
     , servant-client-core >= 0.20 && < 0.21
-    , servant-server >= 0.18.3 && < 0.21
     , servant-websockets >= 2.0.0 && < 2.1
     , shelly >= 1.9 && < 2
-    , split
     , stm >= 2.5.1.0 && < 2.6
     , streaming-commons
-    , tasty >= 1.4.3 && < 1.6
-    , tasty-golden
-    , tasty-hspec
     , tasty-hunit
     , tasty-quickcheck
-    , tasty-smallcheck
-    , template-haskell ^>= 2.19.0.0
     , text ^>= 2.0.2
-    , time ^>= 1.12.2
     , tmp-postgres >= 1.34.1 && < 1.35
     , tree-diff
-    , unicode-collation >= 0.1.3.5
     , unliftio
-    , unordered-containers ^>= 0.2.16.0
-    , utf8-string ^>= 1.0.2
     , validity ^>= 0.12.0.2
-    , vector >= 0.12.3.0 && <= 0.13.1.0
     , wai
     , wai-extra
     , warp
@@ -798,6 +759,23 @@ test-suite garg-test-tasty
     , testDependencies
   type: exitcode-stdio-1.0
   main-is: drivers/tasty/Main.hs
+  build-depends:
+      aeson-pretty ^>= 0.8.9
+    , boolexpr ^>= 0.3
+    , conduit ^>= 1.3.4.2
+    , crawlerArxiv
+    , cryptohash
+    , directory ^>= 1.3.7.1
+    , graphviz ^>= 2999.20.1.0
+    , split
+    , tasty >= 1.4.3 && < 1.6
+    , tasty-golden
+    , tasty-hspec
+    , time ^>= 1.12.2
+    , unicode-collation >= 0.1.3.5
+    , unordered-containers ^>= 0.2.16.0
+    , utf8-string ^>= 1.0.2
+    , vector >= 0.12.3.0 && <= 0.13.1.0
   other-modules:
       CLI.Phylo.Common
       Paths_gargantext
@@ -860,6 +838,7 @@ test-suite garg-test-hspec
     , testDependencies
   type: exitcode-stdio-1.0
   main-is: drivers/hspec/Main.hs
+  build-depends: process ^>= 1.6.18.0
   other-modules:
       Paths_gargantext
       Test.API
diff --git a/stack.yaml b/stack.yaml
index b460cecd..dcb1c67b 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -96,7 +96,6 @@
 - "rake-0.0.1"
 - "random-1.2.1.2"
 - "random-strings-0.1.1.0"
-- "recover-rtti-0.4.3"
 - "reflection-2.1.8"
 - "resourcet-1.3.0"
 - "safe-0.3.21"
-- 
2.21.0


From 0f7fd9c58bad260e331ba2ccf84ba84dcfd7cd14 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Przemys=C5=82aw=20Kaminski?= <pk@intrepidus.pl>
Date: Wed, 18 Dec 2024 21:26:36 +0100
Subject: [PATCH 3/4] [cabal] some more dependencies refactoring

---
 cabal.project        | 25 ++++---------------------
 cabal.project.freeze |  2 --
 gargantext.cabal     |  2 +-
 3 files changed, 5 insertions(+), 24 deletions(-)

diff --git a/cabal.project b/cabal.project
index 118ded93..a821315f 100644
--- a/cabal.project
+++ b/cabal.project
@@ -60,7 +60,6 @@ source-repository-package
     type: git
     location: https://github.com/chessai/eigen.git
     tag: 1790fdf9138970dde0dbabf8b270698145a4a88c
-    -- tag: 8fff32a43df743c8c83428a86dd566a0936a4fba
 
 source-repository-package
     type: git
@@ -154,13 +153,8 @@ source-repository-package
 
 source-repository-package
     type: git
-    location: https://github.com/MercuryTechnologies/ekg-json.git
-    tag: 232db57d6ce0940fcc902adf30a9ed3f3561f21d
-
-source-repository-package
-    type: git
-    location: https://github.com/robstewart57/rdf4h.git
-    tag: 4fd2edf30c141600ffad6d730cc4c1c08a6dbce4
+    location: https://github.com/haskell-github-trust/ekg-json
+    tag: bd0592818882f9cf34d2991d01f7dcb3d8bca309
 
 -- FIXME(adn) Compat-shim while we wait for upstream to catch-up
 source-repository-package
@@ -168,11 +162,6 @@ source-repository-package
     location: https://github.com/garganscript/nanomsg-haskell
     tag: 5868db564d7d3c4568ccd11c852292b834d26c55
     
--- source-repository-package
---     type: git
---     location: https://github.com/jimenezrick/nng-haskell
---     tag: 31e52d7bc720e5fb9daf1c1e8bc1fd156d577af2
-        
 source-repository-package
     type: git
     location: https://github.com/adinapoli/http-reverse-proxy.git
@@ -201,15 +190,9 @@ source-repository-package
     location: https://gitlab.iscpif.fr/gargantext/haskell-throttle
     tag: 02f5ed9ee2d6cce45161addf945b88bc6adf9059
 
-source-repository-package
-    type: git
-    location: https://github.com/glguy/toml-parser
-    tag: toml-parser-2.0.1.0
-
         
-allow-newer:
-             accelerate-arithmetic:accelerate
-           , MissingH:base
+allow-newer: MissingH:base
+           , accelerate-arithmetic:accelerate
            , accelerate-utility:accelerate
            , base:*
            , crawlerHAL:servant
diff --git a/cabal.project.freeze b/cabal.project.freeze
index 8572b751..385a9015 100644
--- a/cabal.project.freeze
+++ b/cabal.project.freeze
@@ -177,7 +177,6 @@ constraints: any.Boolean ==0.2.4,
              any.eigen ==3.3.7.0,
              any.either ==5.0.2,
              any.ekg-core ==0.1.1.7,
-             any.ekg-json ==0.1.0.8,
              any.enclosed-exceptions ==1.0.3,
              any.entropy ==0.4.1.10,
              entropy -donotgetentropy,
@@ -411,7 +410,6 @@ constraints: any.Boolean ==0.2.4,
              any.random ==1.2.1.2,
              any.random-shuffle ==0.0.4,
              any.raw-strings-qq ==1.1,
-             any.rdf4h ==3.1.1,
              any.recover-rtti ==0.4.3,
              any.recv ==0.1.0,
              any.reflection ==2.1.8,
diff --git a/gargantext.cabal b/gargantext.cabal
index 796da5db..3a26e668 100644
--- a/gargantext.cabal
+++ b/gargantext.cabal
@@ -577,7 +577,7 @@ library
     , quickcheck-instances ^>= 0.3.25.2
     , rake ^>= 0.0.1
     , random ^>= 1.2.1
-    , rdf4h ^>= 3.1.1
+    , rdf4h >= 5.1.0 && < 6
     , regex
     , replace-attoparsec ^>= 1.5.0.0
     , resource-pool >= 0.4.0.0 && < 0.5
-- 
2.21.0


From 810a6df465918443ac349e5cb09af935b8dcccd4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Przemys=C5=82aw=20Kaminski?= <pk@intrepidus.pl>
Date: Wed, 18 Dec 2024 22:25:36 +0100
Subject: [PATCH 4/4] [stack] update-project-dependencies

---
 bin/update-project-dependencies |  4 ++--
 stack.yaml                      | 26 +++++++++-----------------
 2 files changed, 11 insertions(+), 19 deletions(-)

diff --git a/bin/update-project-dependencies b/bin/update-project-dependencies
index f75d602d..a975abcb 100755
--- a/bin/update-project-dependencies
+++ b/bin/update-project-dependencies
@@ -18,8 +18,8 @@ fi
 # with the `sha256sum` result calculated on the `cabal.project` and
 # `cabal.project.freeze`. This ensures the files stay deterministic so that CI
 # cache can kick in.
-expected_cabal_project_hash="118ab88c85b38aa740c0f7a23626262cf1d383c20fc8ca986a462259c519c7e7"
-expected_cabal_project_freeze_hash="da270a3d058342dd52cdb44a6797518ef15029b204a8fc405a41e71c2c204071"
+expected_cabal_project_hash="1abcdd99d5d50660e640be8a340c90331a84ef266d174c7ca6099c1c04ef65ea"
+expected_cabal_project_freeze_hash="32310c4d4e7b4679dcb90dcfcd0d6d1b175dbf885a77ffddca16d422998a521c"
 
 
 cabal --store-dir=$STORE_DIR v2-build --dry-run
diff --git a/stack.yaml b/stack.yaml
index dcb1c67b..19f24626 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -50,6 +50,7 @@
 - "hspec-core-2.11.9"
 - "hspec-discover-2.11.9"
 - "hspec-expectations-0.8.4"
+- "html-entities-1.1.4.7"
 - "http-accept-0.2"
 - "http-api-data-0.5.1"
 - "http-client-0.7.14"
@@ -96,9 +97,11 @@
 - "rake-0.0.1"
 - "random-1.2.1.2"
 - "random-strings-0.1.1.0"
+- "rdf4h-5.1.0"
 - "reflection-2.1.8"
 - "resourcet-1.3.0"
 - "safe-0.3.21"
+- "selective-0.7.0.1"
 - "servant-0.20.2"
 - "servant-auth-0.4.2.0"
 - "servant-auth-client-0.4.2.0"
@@ -130,6 +133,7 @@
 - "th-compat-0.1.5"
 - "these-1.2.1"
 - "time-compat-1.9.7"
+- "toml-parser-2.0.1.0"
 - "type-equality-1.0.1"
 - "typed-process-0.2.12.0"
 - "unicode-collation-0.1.3.6"
@@ -164,10 +168,6 @@
   git: "https://github.com/AccelerateHS/accelerate.git"
   subdirs:
   - .
-- commit: 232db57d6ce0940fcc902adf30a9ed3f3561f21d
-  git: "https://github.com/MercuryTechnologies/ekg-json.git"
-  subdirs:
-  - .
 - commit: c90b7bc55b0e628d0b71ccee4e222833a19792f8
   git: "https://github.com/adinapoli/http-reverse-proxy.git"
   subdirs:
@@ -216,12 +216,8 @@
   git: "https://github.com/garganscript/nanomsg-haskell"
   subdirs:
   - .
-- commit: 4a291783f4aa83548eac5009e16e8bdcb5ddc667
-  git: "https://github.com/glguy/toml-parser"
-  subdirs:
-  - .
-- commit: 4fd2edf30c141600ffad6d730cc4c1c08a6dbce4
-  git: "https://github.com/robstewart57/rdf4h.git"
+- commit: bd0592818882f9cf34d2991d01f7dcb3d8bca309
+  git: "https://github.com/haskell-github-trust/ekg-json"
   subdirs:
   - .
 - commit: a3875fe652d3bb5acb522674c22c6c814c1b4ad0
@@ -478,13 +474,6 @@ flags:
   http2:
     devel: false
     h2spec: false
-  hxt:
-    "network-uri": false
-    profile: false
-  "hxt-charproperties":
-    profile: false
-  "hxt-regex-xmlschema":
-    profile: false
   "integer-logarithms":
     "check-bounds": false
     "integer-gmp": true
@@ -700,6 +689,9 @@ flags:
     httpbin: false
   wuss:
     pedantic: false
+  xeno:
+    libxml2: false
+    "whitespace-around-equals": false
   yaml:
     "no-examples": true
     "no-exe": true
-- 
2.21.0