Skip to content

Commit 3c1fa22

Browse files
committed
Carry counts.bytes through tree response transformers
1 parent 2e25eea commit 3c1fa22

4 files changed

Lines changed: 19 additions & 4 deletions

File tree

src/datasets/domain/models/FileTreeNode.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,18 @@ export interface FileTreeFolderNode {
88
name: string
99
path: string
1010
counts?: {
11+
/** Total files anywhere in the folder's subtree (recursive). */
1112
files: number
13+
/** Immediate subfolders only. */
1214
folders: number
15+
/**
16+
* Total size of all files in the subtree, in bytes. Uses the
17+
* default-form file size — for ingested tabular files that's the
18+
* converted TSV, not the original. Intended as a UX hint
19+
* ("downloading this folder = N GB"); not authoritative under
20+
* `originals=true`.
21+
*/
22+
bytes: number
1323
}
1424
}
1525

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ interface FolderItemPayload {
1111
type: 'folder'
1212
name: string
1313
path: string
14-
counts?: { files: number; folders: number }
14+
counts?: { files: number; folders: number; bytes: number }
1515
}
1616

1717
interface FileItemPayload {

test/unit/datasets/ListDatasetTreeNode.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ describe('ListDatasetTreeNode (unit)', () => {
1616
type: FileTreeNodeType.FOLDER,
1717
name: 'sub',
1818
path: 'data/sub',
19-
counts: { files: 1, folders: 0 }
19+
counts: { files: 1, folders: 0, bytes: 1024 }
2020
},
2121
{
2222
type: FileTreeNodeType.FILE,

test/unit/datasets/fileTreeTransformers.test.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,12 @@ describe('transformTreeResponseToFileTreePage', () => {
2121
const response = buildResponse({
2222
path: 'data',
2323
items: [
24-
{ type: 'folder', name: 'raw', path: 'data/raw', counts: { files: 3, folders: 0 } },
24+
{
25+
type: 'folder',
26+
name: 'raw',
27+
path: 'data/raw',
28+
counts: { files: 3, folders: 0, bytes: 4096 }
29+
},
2530
{
2631
type: 'file',
2732
id: 42,
@@ -55,7 +60,7 @@ describe('transformTreeResponseToFileTreePage', () => {
5560
throw new Error('expected folder')
5661
}
5762
expect(folder.name).toBe('raw')
58-
expect(folder.counts).toEqual({ files: 3, folders: 0 })
63+
expect(folder.counts).toEqual({ files: 3, folders: 0, bytes: 4096 })
5964

6065
const file = page.items[1]
6166
if (!isFileTreeFileNode(file)) {

0 commit comments

Comments
 (0)