From afdec283eea57222a2aa9fc3f6994cd93786c651 Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Tue, 28 Nov 2023 16:16:22 +0100 Subject: [PATCH] Fixes sorting and filtering issue for all formats that use source/target/weight format --- packages/ezsLodex/src/reduceQuery.js | 17 ++++++++++------- packages/ezsLodex/src/reducers/count.js | 7 +++++++ packages/ezsLodex/src/reducers/distinct.js | 7 +++++++ packages/ezsLodex/src/reducers/graph.js | 10 ++++++++++ packages/ezsLodex/src/reducers/groupby.js | 7 +++++++ packages/ezsLodex/src/reducers/keys.js | 7 +++++++ packages/ezsLodex/src/reducers/max.js | 7 +++++++ packages/ezsLodex/src/reducers/merge.js | 7 +++++++ packages/ezsLodex/src/reducers/min.js | 7 +++++++ packages/ezsLodex/src/reducers/pairing.js | 10 ++++++++++ packages/ezsLodex/src/reducers/stats.js | 8 ++++++-- packages/ezsLodex/src/reducers/total.js | 7 +++++++ packages/ezsLodex/src/reducers/ventilate.js | 7 +++++++ 13 files changed, 99 insertions(+), 9 deletions(-) diff --git a/packages/ezsLodex/src/reduceQuery.js b/packages/ezsLodex/src/reduceQuery.js index ffedfd874..3328e2dc5 100644 --- a/packages/ezsLodex/src/reduceQuery.js +++ b/packages/ezsLodex/src/reduceQuery.js @@ -49,7 +49,7 @@ export const createFunction = () => async function LodexReduceQuery(data, feed) throw new Error(`Unknown reducer '${reducer}'`); } - const { map, reduce, finalize } = reducers[reducer]; + const { map, reduce, finalize, fieldname } = reducers[reducer]; const fds = Array.isArray(field) ? field : [field]; const fields = fds.filter(Boolean); const collName = String('mp_').concat( @@ -79,21 +79,24 @@ export const createFunction = () => async function LodexReduceQuery(data, feed) const findFilter = {}; if (minValue) { - findFilter.value = { + const minFilter = { $gte: Number(minValue), }; + findFilter[fieldname('value')] = { + ...minFilter, + }; } - if (maxValue) { - findFilter.value = { - ...(findFilter.value || {}), + const maxFilter = { $lte: Number(maxValue), }; + findFilter[fieldname('value')] = { + ...maxFilter, + }; } - const [order, dir] = String(orderBy).split('/'); const sort = order && dir ? ({ - [order]: dir === 'asc' ? 1 : -1, + [fieldname(order)]: dir === 'asc' ? 1 : -1, }) : ({}); const cursor = result.find(findFilter); const count = await cursor.count(); diff --git a/packages/ezsLodex/src/reducers/count.js b/packages/ezsLodex/src/reducers/count.js index 33c5bab67..6c9c886ff 100644 --- a/packages/ezsLodex/src/reducers/count.js +++ b/packages/ezsLodex/src/reducers/count.js @@ -23,3 +23,10 @@ module.exports.reduce = function (key, values) { module.exports.finalize = function finalize(key, value) { return value; }; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value'; + } + return '_id'; +}; diff --git a/packages/ezsLodex/src/reducers/distinct.js b/packages/ezsLodex/src/reducers/distinct.js index ddd864506..661f5e830 100644 --- a/packages/ezsLodex/src/reducers/distinct.js +++ b/packages/ezsLodex/src/reducers/distinct.js @@ -40,3 +40,10 @@ module.exports.reduce = function (key, values) { module.exports.finalize = function finalize(key, value) { return value; }; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value'; + } + return '_id'; +}; diff --git a/packages/ezsLodex/src/reducers/graph.js b/packages/ezsLodex/src/reducers/graph.js index 55b41c35f..d58361ee6 100644 --- a/packages/ezsLodex/src/reducers/graph.js +++ b/packages/ezsLodex/src/reducers/graph.js @@ -69,3 +69,13 @@ module.exports.finalize = function finalize(key, value) { } return obj; }; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value.weight'; + } + if (name === 'label') { + return 'value.source'; + } + return '_id'; +}; diff --git a/packages/ezsLodex/src/reducers/groupby.js b/packages/ezsLodex/src/reducers/groupby.js index dc1357e12..2374464f3 100644 --- a/packages/ezsLodex/src/reducers/groupby.js +++ b/packages/ezsLodex/src/reducers/groupby.js @@ -33,3 +33,10 @@ module.exports.reduce = function (key, values) { module.exports.finalize = function finalize(key, value) { return value; }; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value'; + } + return '_id'; +}; diff --git a/packages/ezsLodex/src/reducers/keys.js b/packages/ezsLodex/src/reducers/keys.js index 17fa33cc8..2419ae90d 100644 --- a/packages/ezsLodex/src/reducers/keys.js +++ b/packages/ezsLodex/src/reducers/keys.js @@ -19,3 +19,10 @@ module.exports.reduce = function (key, values) { module.exports.finalize = function finalize(key, value) { return value; }; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value'; + } + return '_id'; +}; diff --git a/packages/ezsLodex/src/reducers/max.js b/packages/ezsLodex/src/reducers/max.js index 2b686653e..75e9a774a 100644 --- a/packages/ezsLodex/src/reducers/max.js +++ b/packages/ezsLodex/src/reducers/max.js @@ -31,3 +31,10 @@ module.exports.reduce = function (key, values) { module.exports.finalize = function finalize(key, value) { return value; }; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value'; + } + return '_id'; +}; diff --git a/packages/ezsLodex/src/reducers/merge.js b/packages/ezsLodex/src/reducers/merge.js index 8e15470da..103a99b28 100644 --- a/packages/ezsLodex/src/reducers/merge.js +++ b/packages/ezsLodex/src/reducers/merge.js @@ -50,3 +50,10 @@ module.exports.reduce = function (key, values) { module.exports.finalize = function finalize(key, value) { return value; }; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value'; + } + return '_id'; +}; diff --git a/packages/ezsLodex/src/reducers/min.js b/packages/ezsLodex/src/reducers/min.js index 3656427a3..702667e12 100644 --- a/packages/ezsLodex/src/reducers/min.js +++ b/packages/ezsLodex/src/reducers/min.js @@ -31,3 +31,10 @@ module.exports.reduce = function (key, values) { module.exports.finalize = function finalize(key, value) { return value; }; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value'; + } + return '_id'; +}; diff --git a/packages/ezsLodex/src/reducers/pairing.js b/packages/ezsLodex/src/reducers/pairing.js index 3b9b7a7a1..f684762a0 100644 --- a/packages/ezsLodex/src/reducers/pairing.js +++ b/packages/ezsLodex/src/reducers/pairing.js @@ -48,3 +48,13 @@ module.exports.finalize = function finalize(key, value) { } return obj; }; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value.weight'; + } + if (name === 'label') { + return 'value.source'; + } + return '_id'; +}; diff --git a/packages/ezsLodex/src/reducers/stats.js b/packages/ezsLodex/src/reducers/stats.js index b0595eb22..4fb19c10e 100644 --- a/packages/ezsLodex/src/reducers/stats.js +++ b/packages/ezsLodex/src/reducers/stats.js @@ -63,6 +63,10 @@ module.exports.finalize = function finalize(key, value) { return value; }; -module.exports.finalize = function finalize(key, value) { - return value; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value.count'; + } + return '_id'; }; diff --git a/packages/ezsLodex/src/reducers/total.js b/packages/ezsLodex/src/reducers/total.js index 4da227eb4..092c3fef8 100644 --- a/packages/ezsLodex/src/reducers/total.js +++ b/packages/ezsLodex/src/reducers/total.js @@ -35,3 +35,10 @@ module.exports.reduce = function (key, values) { module.exports.finalize = function finalize(key, value) { return value; }; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value'; + } + return '_id'; +}; diff --git a/packages/ezsLodex/src/reducers/ventilate.js b/packages/ezsLodex/src/reducers/ventilate.js index 76defaa7c..5932da194 100644 --- a/packages/ezsLodex/src/reducers/ventilate.js +++ b/packages/ezsLodex/src/reducers/ventilate.js @@ -31,3 +31,10 @@ module.exports.reduce = function (key, values) { module.exports.finalize = function finalize(key, value) { return value; }; + +module.exports.fieldname = function (name) { + if (name === 'value') { + return 'value'; + } + return '_id'; +};