[NGRAMS] refactor prior to orderBy

parent f7b357a7
...@@ -55,7 +55,7 @@ import Data.Map.Strict (Map) ...@@ -55,7 +55,7 @@ import Data.Map.Strict (Map)
import qualified Data.Set as Set import qualified Data.Set as Set
import Control.Category ((>>>)) import Control.Category ((>>>))
import Control.Concurrent import Control.Concurrent
import Control.Lens (makeLenses, makePrisms, Getter, Iso', iso, from, (.~), (?=), (#), to, folded, {-withIndex, ifolded,-} view, use, (^.), (^..), (^?), (+~), (%~), (%=), sumOf, at, _Just, Each(..), itraverse_, both, mapped, forOf_) import Control.Lens (makeLenses, makePrisms, Getter, Iso', iso, from, (.~), (?=), (#), to, folded, {-withIndex, ifolded,-} view, use, (^.), (^..), (^?), (+~), (%~), (%=), sumOf, at, _Just, Each(..), itraverse_, both, forOf_)
import Control.Monad.Error.Class (MonadError) import Control.Monad.Error.Class (MonadError)
import Control.Monad.Reader import Control.Monad.Reader
import Control.Monad.State import Control.Monad.State
...@@ -883,6 +883,7 @@ getTableNgrams :: (RepoCmdM env err m, HasNodeError err, HasConnection env) ...@@ -883,6 +883,7 @@ getTableNgrams :: (RepoCmdM env err m, HasNodeError err, HasConnection env)
getTableNgrams nId tabType listId limit_ offset getTableNgrams nId tabType listId limit_ offset
listType minSize maxSize searchQuery = do listType minSize maxSize searchQuery = do
lIds <- selectNodesWithUsername NodeList userMaster
let let
ngramsType = ngramsTypeFromTabType tabType ngramsType = ngramsTypeFromTabType tabType
offset' = maybe 0 identity offset offset' = maybe 0 identity offset
...@@ -899,23 +900,16 @@ getTableNgrams nId tabType listId limit_ offset ...@@ -899,23 +900,16 @@ getTableNgrams nId tabType listId limit_ offset
selected_inner roots n = maybe False (`Set.member` roots) (n ^. ne_root) selected_inner roots n = maybe False (`Set.member` roots) (n ^. ne_root)
finalize tableMap = NgramsTable $ roots <> inners selectAndPaginate tableMap (NgramsTable list) = NgramsTable $ roots <> inners
where where
rootOf ne = maybe ne (\r -> ngramsElementFromRepo (r, fromMaybe (panic "getTableNgrams: invalid root") (tableMap ^. at r))) rootOf ne = maybe ne (\r -> ngramsElementFromRepo (r, fromMaybe (panic "getTableNgrams: invalid root") (tableMap ^. v_data . at r)))
(ne ^. ne_root) (ne ^. ne_root)
list = ngramsElementFromRepo <$> Map.toList tableMap
selected_nodes = list & take limit_ . drop offset' . filter selected_node selected_nodes = list & take limit_ . drop offset' . filter selected_node
roots = rootOf <$> selected_nodes roots = rootOf <$> selected_nodes
rootsSet = Set.fromList (_ne_ngrams <$> roots) rootsSet = Set.fromList (_ne_ngrams <$> roots)
inners = list & filter (selected_inner rootsSet) inners = list & filter (selected_inner rootsSet)
-- lists <- catMaybes <$> listsWith userMaster setOccurrences table = do
-- trace (show lists) $
-- getNgramsTableMap ({-lists <>-} listIds) ngramsType
table <- getNgramsTableMap listId ngramsType & mapped . v_data %~ finalize
lIds <- selectNodesWithUsername NodeList userMaster
occurrences <- getOccByNgramsOnlySafe nId (lIds <> [listId]) ngramsType (table ^.. v_data . _NgramsTable . each . ne_ngrams) occurrences <- getOccByNgramsOnlySafe nId (lIds <> [listId]) ngramsType (table ^.. v_data . _NgramsTable . each . ne_ngrams)
let let
...@@ -923,6 +917,14 @@ getTableNgrams nId tabType listId limit_ offset ...@@ -923,6 +917,14 @@ getTableNgrams nId tabType listId limit_ offset
pure $ table & v_data . _NgramsTable . each %~ setOcc pure $ table & v_data . _NgramsTable . each %~ setOcc
-- lists <- catMaybes <$> listsWith userMaster
-- trace (show lists) $
-- getNgramsTableMap ({-lists <>-} listIds) ngramsType
tableMap <- getNgramsTableMap listId ngramsType
let table = tableMap & v_data %~ (NgramsTable . fmap ngramsElementFromRepo . Map.toList)
setOccurrences $ table & v_data %~ selectAndPaginate tableMap
-- APIs -- APIs
......
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