Skip to content

Commit 61058f6

Browse files
committed
Carry per-access folder counts through tree response transformers
1 parent 3c1fa22 commit 61058f6

4 files changed

Lines changed: 40 additions & 4 deletions

File tree

src/datasets/domain/models/FileTreeNode.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,18 @@ export interface FileTreeFolderNode {
2020
* `originals=true`.
2121
*/
2222
bytes: number
23+
/**
24+
* Files in the subtree marked restricted. Mirrors the per-file
25+
* `access` resolution: a row that is both restricted and embargoed
26+
* is counted here, not in `embargoed`.
27+
*/
28+
restricted: number
29+
/**
30+
* Non-restricted files in the subtree whose embargo has not yet
31+
* lapsed. The "public" count is implied: `files - restricted -
32+
* embargoed`.
33+
*/
34+
embargoed: number
2335
}
2436
}
2537

src/datasets/infra/repositories/transformers/fileTreeTransformers.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ interface FolderItemPayload {
1111
type: 'folder'
1212
name: string
1313
path: string
14-
counts?: { files: number; folders: number; bytes: number }
14+
counts?: {
15+
files: number
16+
folders: number
17+
bytes: number
18+
restricted: number
19+
embargoed: number
20+
}
1521
}
1622

1723
interface FileItemPayload {

test/unit/datasets/ListDatasetTreeNode.test.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,13 @@ describe('ListDatasetTreeNode (unit)', () => {
1616
type: FileTreeNodeType.FOLDER,
1717
name: 'sub',
1818
path: 'data/sub',
19-
counts: { files: 1, folders: 0, bytes: 1024 }
19+
counts: {
20+
files: 1,
21+
folders: 0,
22+
bytes: 1024,
23+
restricted: 0,
24+
embargoed: 0
25+
}
2026
},
2127
{
2228
type: FileTreeNodeType.FILE,

test/unit/datasets/fileTreeTransformers.test.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,13 @@ describe('transformTreeResponseToFileTreePage', () => {
2525
type: 'folder',
2626
name: 'raw',
2727
path: 'data/raw',
28-
counts: { files: 3, folders: 0, bytes: 4096 }
28+
counts: {
29+
files: 3,
30+
folders: 0,
31+
bytes: 4096,
32+
restricted: 0,
33+
embargoed: 0
34+
}
2935
},
3036
{
3137
type: 'file',
@@ -60,7 +66,13 @@ describe('transformTreeResponseToFileTreePage', () => {
6066
throw new Error('expected folder')
6167
}
6268
expect(folder.name).toBe('raw')
63-
expect(folder.counts).toEqual({ files: 3, folders: 0, bytes: 4096 })
69+
expect(folder.counts).toEqual({
70+
files: 3,
71+
folders: 0,
72+
bytes: 4096,
73+
restricted: 0,
74+
embargoed: 0
75+
})
6476

6577
const file = page.items[1]
6678
if (!isFileTreeFileNode(file)) {

0 commit comments

Comments
 (0)