mirror of
https://github.com/strapi/strapi.git
synced 2025-09-26 08:52:26 +00:00
Fix count endpoint with filters
Signed-off-by: soupette <cyril.lpz@gmail.com>
This commit is contained in:
parent
a940bbc8c0
commit
bdbec4e3f0
@ -1,16 +1,15 @@
|
||||
import { isEmpty, toString } from 'lodash';
|
||||
|
||||
const generateSearchFromFilters = filters => {
|
||||
const generateSearchFromFilters = (filters, paramsToFilter = []) => {
|
||||
return Object.keys(filters)
|
||||
.filter(key => !isEmpty(toString(filters[key])))
|
||||
.filter(key => !paramsToFilter.includes(key) && !isEmpty(toString(filters[key])))
|
||||
.map(key => {
|
||||
let ret = `${key}=${filters[key]}`;
|
||||
|
||||
if (key === 'filters') {
|
||||
const formattedFilters = filters[key]
|
||||
.reduce((acc, curr) => {
|
||||
const key =
|
||||
curr.filter === '=' ? curr.name : `${curr.name}${curr.filter}`;
|
||||
const key = curr.filter === '=' ? curr.name : `${curr.name}${curr.filter}`;
|
||||
acc.push(`${key}=${curr.value}`);
|
||||
|
||||
return acc;
|
||||
|
@ -123,10 +123,11 @@ const HomePage = () => {
|
||||
};
|
||||
|
||||
const fetchDataCount = async () => {
|
||||
const params = generateStringFromParams(query, ['_limit', '_sort', '_start']);
|
||||
const requestURL = getRequestUrl('files/count');
|
||||
|
||||
try {
|
||||
const { count } = await request(requestURL, {
|
||||
const { count } = await request(`${requestURL}?${params}`, {
|
||||
method: 'GET',
|
||||
});
|
||||
|
||||
|
@ -1,12 +1,14 @@
|
||||
import { isEmpty, toString } from 'lodash';
|
||||
import generateParamsFromQuery from './generateParamsFromQuery';
|
||||
|
||||
const generateStringFromParams = query => {
|
||||
const generateStringFromParams = (query, paramsToFilter = []) => {
|
||||
let paramsString = '';
|
||||
const paramsObject = generateParamsFromQuery(query);
|
||||
|
||||
Object.keys(paramsObject)
|
||||
.filter(key => !isEmpty(toString(paramsObject[key])))
|
||||
.filter(key => {
|
||||
return !paramsToFilter.includes(key) && !isEmpty(toString(paramsObject[key]));
|
||||
})
|
||||
.forEach(key => {
|
||||
const value = paramsObject[key];
|
||||
|
||||
|
@ -41,5 +41,25 @@ describe('MEDIA LIBRARY | containers | HomePage | utils', () => {
|
||||
expect(generateStringFromParams(query)).toEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe('it should filter the defined params', () => {
|
||||
it('should return _ncontains instead of _contains', () => {
|
||||
const search = '?mime_ncontains=file&test=true';
|
||||
const query = new URLSearchParams(search);
|
||||
|
||||
const expected = '_limit=10&_start=0&mime_contains=image&mime_contains=video&test=true';
|
||||
|
||||
expect(generateStringFromParams(query, [])).toEqual(expected);
|
||||
});
|
||||
|
||||
it('should not return the _limit param', () => {
|
||||
const search = '?mime_ncontains=file';
|
||||
const query = new URLSearchParams(search);
|
||||
|
||||
const expected = '_start=0&mime_contains=image&mime_contains=video';
|
||||
|
||||
expect(generateStringFromParams(query, ['_limit'])).toEqual(expected);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -293,9 +293,11 @@ const InputModalStepperProvider = ({
|
||||
|
||||
const fetchMediaLibFilesCount = async () => {
|
||||
const requestURL = getRequestUrl('files/count');
|
||||
const compactedParams = compactParams(params);
|
||||
const paramsToSend = generateSearchFromFilters(compactedParams, ['_limit', '_sort', '_start']);
|
||||
|
||||
try {
|
||||
return await request(`${requestURL}`, {
|
||||
return await request(`${requestURL}?${paramsToSend}`, {
|
||||
method: 'GET',
|
||||
});
|
||||
} catch (err) {
|
||||
@ -317,7 +319,6 @@ const InputModalStepperProvider = ({
|
||||
|
||||
const fetchMediaLibFiles = async () => {
|
||||
const requestURL = getRequestUrl('files');
|
||||
|
||||
const compactedParams = compactParams(params);
|
||||
const paramsToSend = generateSearchFromFilters(compactedParams);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user