UNPKG

@ugandaemr/esm-patient-queues-app

Version:
33 lines (30 loc) 1.04 kB
import { PagingCriteria } from './pageable-result'; export enum ResourceRepresentation { Default = 'default', Full = 'full', REF = 'ref', } export interface ResourceFilterCriteria extends PagingCriteria { v?: ResourceRepresentation | null | string; q?: string | null; totalCount?: boolean | null; limit?: number | null; sort?: string; } 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 : ''; }