+const serializeProcessTypeFilters = ({ fb, selectedFilters }: ReturnType<typeof createFiltersBuilder>) => pipe(
+ () => getMatchingFilters(values(ProcessTypeFilter), selectedFilters),
+ filters => filters,
+ mappedFilters => ({
+ fb: buildProcessTypeFilters({ fb, filters: mappedFilters }),
+ selectedFilters
+ })
+)();
+
+const PROCESS_TYPES = values(ProcessTypeFilter);
+const PROCESS_PREFIX = GroupContentsResourcePrefix.PROCESS;
+
+const buildProcessTypeFilters = ({ fb, filters }: { fb: FilterBuilder, filters: string[] }) => {
+ switch (true) {
+ case filters.length === 0 || filters.length === PROCESS_TYPES.length:
+ return fb;
+ case includes(ProcessTypeFilter.MAIN_PROCESS, filters):
+ return fb.addEqual('requesting_container_uuid', null, PROCESS_PREFIX);
+ case includes(ProcessTypeFilter.CHILD_PROCESS, filters):
+ return fb.addDistinct('requesting_container_uuid', null, PROCESS_PREFIX);
+ default:
+ return fb;
+ }
+};
+