[document export] this works now, in JSON format
[gargantext.git] / src / Gargantext / Database / Query / Table / Ngrams.hs
index 61d968e5c6bf6b82ed82f71c0d45c72ea7d08a48..8122deda3083889f620b737d40dd408e7ab5dad3 100644 (file)
@@ -24,10 +24,10 @@ module Gargantext.Database.Query.Table.Ngrams
 import Control.Lens ((^.))
 import Data.HashMap.Strict (HashMap)
 import Data.ByteString.Internal (ByteString)
-import Data.Map (Map, fromList)
 import Data.Text (Text)
 import qualified Database.PostgreSQL.Simple as PGS
-import qualified Data.HashMap.Strict as HashMap
+import qualified Data.List                  as List
+import qualified Data.HashMap.Strict        as HashMap
 
 import Gargantext.Core.Types
 import Gargantext.Database.Prelude (runOpaQuery, Cmd)
@@ -39,7 +39,7 @@ import Gargantext.Database.Types
 import Gargantext.Prelude
 
 queryNgramsTable :: Query NgramsRead
-queryNgramsTable = queryTable ngramsTable
+queryNgramsTable = selectTable ngramsTable
 
 selectNgramsByDoc :: [ListId] -> DocId -> NgramsType -> Cmd err [Text]
 selectNgramsByDoc lIds dId nt = runOpaQuery (query lIds dId nt)
@@ -67,7 +67,10 @@ _dbGetNgramsDb = runOpaQuery queryNgramsTable
 
 -- TODO-ACCESS: access must not be checked here but when insertNgrams is called.
 insertNgrams :: [Ngrams] -> Cmd err (HashMap Text NgramsId)
-insertNgrams ns = HashMap.fromList <$> map (\(Indexed i t) -> (t, i)) <$> (insertNgrams' ns)
+insertNgrams ns =
+  if List.null ns
+     then pure HashMap.empty
+     else HashMap.fromList <$> map (\(Indexed i t) -> (t, i)) <$> (insertNgrams' ns)
 
 -- TODO-ACCESS: access must not be checked here but when insertNgrams' is called.
 insertNgrams' :: [Ngrams] -> Cmd err [Indexed Int Text]
@@ -91,12 +94,10 @@ queryInsertNgrams = [sql|
        RETURNING id,terms
        )
 
-    SELECT terms, id
+    SELECT id, terms
     FROM   ins
     UNION  ALL
     SELECT c.id, terms
     FROM   input_rows
     JOIN   ngrams c USING (terms);     -- columns of unique index
            |]
-
-