All files / src/core/api api.ts

36.36% Statements 4/11
0% Branches 0/12
25% Functions 1/4
40% Lines 4/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33    7x 7x 7x 7x                                                      
import { type PagingCriteria } from './types/PageableResult';
 
export enum ResourceRepresentation {
  Default = 'default',
  Full = 'full',
  REF = 'ref',
}
 
export interface ResourceFilterCriteria extends PagingCriteria {
  v?: ResourceRepresentation | null;
  q?: string | null;
  totalCount?: boolean | null;
  limit?: number | null;
}
 
export function toQueryParams<T extends ResourceFilterCriteria>(
  filterCriteria?: T | null,
  skipEmptyString = true,
): string {
  if (!filterCriteria) return '';
  const queryParams: string = Object.keys(filterCriteria)
    ?.map((key) => {
      const value = filterCriteria[key];
      return (skipEmptyString && (value === false || value === true ? true : value)) ||
        (!skipEmptyString && (value === '' || (value === false || value === true ? true : value)))
        ? `${encodeURIComponent(key)}=${encodeURIComponent(value.toString())}`
        : null;
    })
    .filter((o) => o != null)
    .join('&');
  return queryParams.length > 0 ? '?' + queryParams : '';
}