Commit 02eb40eb authored by Alexandre Delanoë's avatar Alexandre Delanoë

[REFACT] Types

parent 2f672573
...@@ -132,7 +132,7 @@ import Gargantext.Database.Admin.Types.Node (NodeType(..)) ...@@ -132,7 +132,7 @@ import Gargantext.Database.Admin.Types.Node (NodeType(..))
import Gargantext.Database.Prelude (HasConnectionPool, HasConfig) import Gargantext.Database.Prelude (HasConnectionPool, HasConfig)
import Gargantext.Database.Query.Table.Node.Error (HasNodeError) import Gargantext.Database.Query.Table.Node.Error (HasNodeError)
import Gargantext.Database.Query.Table.Node.Select import Gargantext.Database.Query.Table.Node.Select
import Gargantext.Database.Query.Table.Ngrams hiding (NgramsType(..), ngrams, ngramsType, ngrams_terms) import Gargantext.Database.Query.Table.Ngrams hiding (NgramsType(..), ngramsType, ngrams_terms)
import qualified Gargantext.Database.Query.Table.Ngrams as TableNgrams import qualified Gargantext.Database.Query.Table.Ngrams as TableNgrams
import Gargantext.Database.Query.Table.Node (getNode) import Gargantext.Database.Query.Table.Node (getNode)
import Gargantext.Database.Schema.Node (node_id, node_parentId, node_userId) import Gargantext.Database.Schema.Node (node_id, node_parentId, node_userId)
......
...@@ -20,6 +20,7 @@ import Gargantext.Database.Prelude (Cmd) ...@@ -20,6 +20,7 @@ import Gargantext.Database.Prelude (Cmd)
import Gargantext.Database.Query.Table.NodeNodeNgrams import Gargantext.Database.Query.Table.NodeNodeNgrams
import Gargantext.Database.Schema.Ngrams import Gargantext.Database.Schema.Ngrams
import Gargantext.Database.Schema.Node import Gargantext.Database.Schema.Node
import Gargantext.Database.Types
import Gargantext.Prelude import Gargantext.Prelude
import qualified Data.Map as DM import qualified Data.Map as DM
...@@ -81,10 +82,10 @@ insertDocNgramsOn cId dn = ...@@ -81,10 +82,10 @@ insertDocNgramsOn cId dn =
$ (map (docNgrams2nodeNodeNgrams cId) dn) $ (map (docNgrams2nodeNodeNgrams cId) dn)
insertDocNgrams :: CorpusId insertDocNgrams :: CorpusId
-> Map (NgramsIndexed Ngrams) (Map NgramsType (Map NodeId Int)) -> Map (Indexed Ngrams) (Map NgramsType (Map NodeId Int))
-> Cmd err Int -> Cmd err Int
insertDocNgrams cId m = insertDocNgrams cId m =
insertDocNgramsOn cId [ DocNgrams n (_ngramsId ng) (ngramsTypeId t) (fromIntegral i) insertDocNgramsOn cId [ DocNgrams n (_index ng) (ngramsTypeId t) (fromIntegral i)
| (ng, t2n2i) <- DM.toList m | (ng, t2n2i) <- DM.toList m
, (t, n2i) <- DM.toList t2n2i , (t, n2i) <- DM.toList t2n2i
, (n, i) <- DM.toList n2i , (n, i) <- DM.toList n2i
......
...@@ -33,6 +33,7 @@ import Gargantext.Database.Prelude (runPGSQuery, formatPGSQuery) ...@@ -33,6 +33,7 @@ import Gargantext.Database.Prelude (runPGSQuery, formatPGSQuery)
import Gargantext.Database.Query.Table.NodeNodeNgrams import Gargantext.Database.Query.Table.NodeNodeNgrams
import Gargantext.Database.Schema.Ngrams import Gargantext.Database.Schema.Ngrams
import Gargantext.Database.Schema.Prelude import Gargantext.Database.Schema.Prelude
import Gargantext.Database.Types
import Gargantext.Prelude import Gargantext.Prelude
queryNgramsTable :: Query NgramsRead queryNgramsTable :: Query NgramsRead
...@@ -64,10 +65,10 @@ _dbGetNgramsDb = runOpaQuery queryNgramsTable ...@@ -64,10 +65,10 @@ _dbGetNgramsDb = runOpaQuery queryNgramsTable
-- TODO-ACCESS: access must not be checked here but when insertNgrams is called. -- TODO-ACCESS: access must not be checked here but when insertNgrams is called.
insertNgrams :: [Ngrams] -> Cmd err (Map NgramsTerms NgramsId) insertNgrams :: [Ngrams] -> Cmd err (Map NgramsTerms NgramsId)
insertNgrams ns = fromList <$> map (\(NgramsIndexed t i) -> (t, i)) <$> (insertNgrams' ns) insertNgrams ns = fromList <$> map (\(Indexed t i) -> (t, i)) <$> (insertNgrams' ns)
-- TODO-ACCESS: access must not be checked here but when insertNgrams' is called. -- TODO-ACCESS: access must not be checked here but when insertNgrams' is called.
insertNgrams' :: [Ngrams] -> Cmd err [NgramsIndexed Text] insertNgrams' :: [Ngrams] -> Cmd err [Indexed Text]
insertNgrams' ns = runPGSQuery queryInsertNgrams (PGS.Only $ Values fields ns) insertNgrams' ns = runPGSQuery queryInsertNgrams (PGS.Only $ Values fields ns)
where where
fields = map (\t -> QualifiedIdentifier Nothing t) ["text", "int4"] fields = map (\t -> QualifiedIdentifier Nothing t) ["text", "int4"]
......
...@@ -17,10 +17,10 @@ module Gargantext.Database.Query.Table.NgramsPostag ...@@ -17,10 +17,10 @@ module Gargantext.Database.Query.Table.NgramsPostag
where where
import Data.Text (Text) import Data.Text (Text)
import Gargantext.Database.Prelude (Cmd) import Gargantext.Database.Prelude (Cmd, runPGSQuery)
import Gargantext.Database.Prelude (runPGSQuery)
import Gargantext.Database.Schema.Ngrams import Gargantext.Database.Schema.Ngrams
import Gargantext.Database.Schema.Prelude import Gargantext.Database.Schema.Prelude
import Gargantext.Database.Types
import Gargantext.Prelude import Gargantext.Prelude
import qualified Database.PostgreSQL.Simple as PGS import qualified Database.PostgreSQL.Simple as PGS
...@@ -37,7 +37,7 @@ type NgramsPostagInsert = ( Int ...@@ -37,7 +37,7 @@ type NgramsPostagInsert = ( Int
) )
insertNgramsPostag :: [NgramsPostagInsert] -> Cmd err [NgramsIndexed Text] insertNgramsPostag :: [NgramsPostagInsert] -> Cmd err [Indexed Text]
insertNgramsPostag ns = runPGSQuery queryInsertNgramsPostag (PGS.Only $ Values fields ns) insertNgramsPostag ns = runPGSQuery queryInsertNgramsPostag (PGS.Only $ Values fields ns)
where where
......
...@@ -32,6 +32,7 @@ import Gargantext.Prelude ...@@ -32,6 +32,7 @@ import Gargantext.Prelude
import Prelude (Functor) import Prelude (Functor)
import Servant (FromHttpApiData, parseUrlPiece, Proxy(..)) import Servant (FromHttpApiData, parseUrlPiece, Proxy(..))
import Text.Read (read) import Text.Read (read)
import Gargantext.Database.Types
import Gargantext.Database.Schema.Prelude import Gargantext.Database.Schema.Prelude
import qualified Database.PostgreSQL.Simple as PGS import qualified Database.PostgreSQL.Simple as PGS
...@@ -70,14 +71,12 @@ ngramsTable = Table "ngrams" (pNgramsDb NgramsDB { _ngrams_id = optional "id" ...@@ -70,14 +71,12 @@ ngramsTable = Table "ngrams" (pNgramsDb NgramsDB { _ngrams_id = optional "id"
} }
) )
-- | Main Ngrams Types -- | Main Ngrams Types
-- | Typed Ngrams -- | Typed Ngrams
-- Typed Ngrams localize the context of the ngrams -- Typed Ngrams localize the context of the ngrams
-- ngrams in source field of document has Sources Type -- ngrams in source field of document has Sources Type
-- ngrams in authors field of document has Authors Type -- ngrams in authors field of document has Authors Type
-- ngrams in text (title or abstract) of documents has Terms Type -- ngrams in text fields of documents has Terms Type (i.e. either title or abstract)
data NgramsType = Authors | Institutes | Sources | NgramsTerms data NgramsType = Authors | Institutes | Sources | NgramsTerms
deriving (Eq, Show, Read, Ord, Enum, Bounded, Generic) deriving (Eq, Show, Read, Ord, Enum, Bounded, Generic)
...@@ -177,26 +176,14 @@ makeLenses ''NgramsT ...@@ -177,26 +176,14 @@ makeLenses ''NgramsT
instance Functor NgramsT where instance Functor NgramsT where
fmap = over ngramsT fmap = over ngramsT
----------------------------------------------------------------------- -----------------------------------------------------------------------
data NgramsIndexed a =
NgramsIndexed
{ _ngrams :: a
, _ngramsId :: NgramsId
} deriving (Show, Generic, Eq, Ord)
makeLenses ''NgramsIndexed
instance (FromField a) => PGS.FromRow (NgramsIndexed a) where
fromRow = NgramsIndexed <$> field <*> field
------------------------------------------------------------------------
withMap :: Map NgramsTerms NgramsId -> NgramsTerms -> NgramsId withMap :: Map NgramsTerms NgramsId -> NgramsTerms -> NgramsId
withMap m n = maybe (panic "withMap: should not happen") identity (lookup n m) withMap m n = maybe (panic "withMap: should not happen") identity (lookup n m)
indexNgramsT :: Map NgramsTerms NgramsId -> NgramsT Ngrams -> NgramsT (NgramsIndexed Ngrams) indexNgramsT :: Map NgramsTerms NgramsId -> NgramsT Ngrams -> NgramsT (Indexed Ngrams)
indexNgramsT = fmap . indexNgramsWith . withMap indexNgramsT = fmap . indexNgramsWith . withMap
indexNgrams :: Map NgramsTerms NgramsId -> Ngrams -> (NgramsIndexed Ngrams) indexNgrams :: Map NgramsTerms NgramsId -> Ngrams -> Indexed Ngrams
indexNgrams = indexNgramsWith . withMap indexNgrams = indexNgramsWith . withMap
indexNgramsWith :: (NgramsTerms -> NgramsId) -> Ngrams -> NgramsIndexed Ngrams indexNgramsWith :: (NgramsTerms -> NgramsId) -> Ngrams -> Indexed Ngrams
indexNgramsWith f n = NgramsIndexed n (f $ _ngramsTerms n) indexNgramsWith f n = Indexed n (f $ _ngramsTerms n)
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