X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/219d452e647c01754bf71b91086b15cc9f00027a..cf83b358f087a87b5ff095d3ed7a8c6920c60ffe:/src/services/collection-files-service/collection-manifest-mapper.ts diff --git a/src/services/collection-files-service/collection-manifest-mapper.ts b/src/services/collection-files-service/collection-manifest-mapper.ts deleted file mode 100644 index c2a8ae8e..00000000 --- a/src/services/collection-files-service/collection-manifest-mapper.ts +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (C) The Arvados Authors. All rights reserved. -// -// SPDX-License-Identifier: AGPL-3.0 - -import { uniqBy } from 'lodash'; -import { KeepManifestStream, KeepManifestStreamFile, KeepManifest } from "../../models/keep-manifest"; -import { TreeNode, setNode, createTree } from '../../models/tree'; -import { CollectionFilesTree, CollectionFile, CollectionDirectory, createCollectionDirectory, createCollectionFile } from '../../models/collection-file'; - -export const mapManifestToCollectionFilesTree = (manifest: KeepManifest): CollectionFilesTree => - manifestToCollectionFiles(manifest) - .map(mapCollectionFileToTreeNode) - .reduce((tree, node) => setNode(node)(tree), createTree()); - - -export const mapCollectionFileToTreeNode = (file: CollectionFile): TreeNode => ({ - children: [], - id: file.id, - parent: file.parentId, - value: file -}); - -export const manifestToCollectionFiles = (manifest: KeepManifest): Array => ([ - ...mapManifestToDirectories(manifest), - ...mapManifestToFiles(manifest) -]); - -export const mapManifestToDirectories = (manifest: KeepManifest): CollectionDirectory[] => - uniqBy( - manifest - .map(mapStreamDirectory) - .map(splitDirectory) - .reduce((all, splitted) => ([...all, ...splitted]), []), - directory => directory.id); - -export const mapManifestToFiles = (manifest: KeepManifest): CollectionFile[] => - manifest - .map(stream => stream.files.map(mapStreamFile(stream))) - .reduce((all, current) => ([...all, ...current]), []); - -const splitDirectory = (directory: CollectionDirectory): CollectionDirectory[] => { - return directory.name - .split('/') - .slice(1) - .map(mapPathComponentToDirectory); -}; - -const mapPathComponentToDirectory = (component: string, index: number, components: string[]): CollectionDirectory => - createCollectionDirectory({ - parentId: index === 0 ? '' : joinPathComponents(components, index), - id: joinPathComponents(components, index + 1), - name: component, - }); - -const joinPathComponents = (components: string[], index: number) => - `/${components.slice(0, index).join('/')}`; - -const mapStreamDirectory = (stream: KeepManifestStream): CollectionDirectory => - createCollectionDirectory({ - parentId: '', - id: stream.name, - name: stream.name, - }); - -const mapStreamFile = (stream: KeepManifestStream) => - (file: KeepManifestStreamFile): CollectionFile => - createCollectionFile({ - parentId: stream.name, - id: `${stream.name}/${file.name}`, - name: file.name, - size: file.size, - }); -