diff options
Diffstat (limited to 'app/assets/javascripts/packages_and_registries/shared/utils.js')
-rw-r--r-- | app/assets/javascripts/packages_and_registries/shared/utils.js | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/app/assets/javascripts/packages_and_registries/shared/utils.js b/app/assets/javascripts/packages_and_registries/shared/utils.js new file mode 100644 index 00000000000..cc5c7ce82bf --- /dev/null +++ b/app/assets/javascripts/packages_and_registries/shared/utils.js @@ -0,0 +1,29 @@ +import { queryToObject } from '~/lib/utils/url_utility'; +import { FILTERED_SEARCH_TERM } from './constants'; + +export const getQueryParams = (query) => queryToObject(query, { gatherArrays: true }); + +export const keyValueToFilterToken = (type, data) => ({ type, value: { data } }); + +export const searchArrayToFilterTokens = (search) => + search.map((s) => keyValueToFilterToken(FILTERED_SEARCH_TERM, s)); + +export const extractFilterAndSorting = (queryObject) => { + const { type, search, sort, orderBy } = queryObject; + const filters = []; + const sorting = {}; + + if (type) { + filters.push(keyValueToFilterToken('type', type)); + } + if (search) { + filters.push(...searchArrayToFilterTokens(search)); + } + if (sort) { + sorting.sort = sort; + } + if (orderBy) { + sorting.orderBy = orderBy; + } + return { filters, sorting }; +}; |