+const getProcessParent = (childProcess: ContainerRequestResource) =>
+ async (services: ServiceRepository): Promise<ContainerRequestResource | undefined> => {
+ if (childProcess.requestingContainerUuid) {
+ const parentProcesses = await services.containerRequestService.list({
+ order: new OrderBuilder<ProcessResource>().addAsc('createdAt').getOrder(),
+ filters: new FilterBuilder().addEqual('container_uuid', childProcess.requestingContainerUuid).getFilters(),
+ select: containerRequestFieldsNoMounts,
+ });
+ if (parentProcesses.items.length > 0) {
+ return parentProcesses.items[0];
+ } else {
+ return undefined;
+ }
+ } else {
+ return undefined;
+ }
+ }
+
+const getCollectionParent = (collection: CollectionResource) =>
+ async (services: ServiceRepository): Promise<ContainerRequestResource | undefined> => {
+ const parentOutputPromise = services.containerRequestService.list({
+ order: new OrderBuilder<ProcessResource>().addAsc('createdAt').getOrder(),
+ filters: new FilterBuilder().addEqual('output_uuid', collection.uuid).getFilters(),
+ select: containerRequestFieldsNoMounts,
+ });
+ const parentLogPromise = services.containerRequestService.list({
+ order: new OrderBuilder<ProcessResource>().addAsc('createdAt').getOrder(),
+ filters: new FilterBuilder().addEqual('log_uuid', collection.uuid).getFilters(),
+ select: containerRequestFieldsNoMounts,
+ });
+ const [parentOutput, parentLog] = await Promise.all([parentOutputPromise, parentLogPromise]);
+ return parentOutput.items.length > 0 ?
+ parentOutput.items[0] :
+ parentLog.items.length > 0 ?
+ parentLog.items[0] :
+ undefined;
+ }
+
+