Skip to content

Commit 8f2172f

Browse files
committed
feat: update code to work with dv objects
1 parent 1db9726 commit 8f2172f

File tree

3 files changed

+40
-23
lines changed

3 files changed

+40
-23
lines changed

src/collections/domain/models/CollectionFeaturedItem.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ export interface CustomFeaturedItem {
1111

1212
export interface DvObjectFeaturedItem {
1313
id: number
14-
type: 'collection' | 'dataset' | 'file'
14+
type: DvObjectFeaturedItemType
1515
dvObjectIdentifier: string
1616
displayOrder: number
1717
}
18+
19+
export enum DvObjectFeaturedItemType {
20+
COLLECTION = 'collection',
21+
DATASET = 'dataset',
22+
FILE = 'file'
23+
}

src/collections/infra/repositories/CollectionsRepository.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,14 @@ import {
1818
SortType
1919
} from '../../domain/models/CollectionSearchCriteria'
2020
import { CollectionItemType } from '../../domain/models/CollectionItemType'
21-
import { CollectionFeaturedItem } from '../../domain/models/CollectionFeaturedItem'
22-
import { transformCollectionFeaturedItemsPayloadToCollectionFeaturedItems } from './transformers/collectionFeaturedItemsTransformer'
21+
import {
22+
CollectionFeaturedItem,
23+
DvObjectFeaturedItem
24+
} from '../../domain/models/CollectionFeaturedItem'
25+
import {
26+
domainTypeToApiType,
27+
transformCollectionFeaturedItemsPayloadToCollectionFeaturedItems
28+
} from './transformers/collectionFeaturedItemsTransformer'
2329
import {
2430
CollectionFeaturedItemsDTO,
2531
CustomFeaturedItemDTO,
@@ -388,38 +394,30 @@ export class CollectionsRepository extends ApiRepository implements ICollections
388394

389395
orderedFeaturedItemsDTO.forEach((item: CustomFeaturedItemDTO | DvObjectFeaturedItemDTO) => {
390396
formData.append('id', item.id !== undefined ? item.id.toString() : '0')
391-
formData.append('type', item.type)
392397
formData.append('displayOrder', item.displayOrder.toString())
393398

394399
if (item.type === 'custom') {
395400
// CustomFeaturedItemDTO
401+
formData.append('type', item.type)
396402
formData.append('content', item.content)
397403
formData.append('keepFile', item.keepFile.toString())
398404
formData.append('fileName', item.file ? item.file.name : '')
399405
if (item.file) {
400406
formData.append('file', item.file)
401407
}
408+
409+
// We still need to append dvObjectIdentifier as it is expected by the backend even empty
410+
formData.append('dvObjectIdentifier', '')
402411
} else {
403412
// DvObjectFeaturedItemDTO
413+
formData.append('type', domainTypeToApiType[item.type as DvObjectFeaturedItem['type']])
404414
formData.append('dvObjectIdentifier', item.dvObjectIdentifier)
405415

406416
// We still need to append content, keepFile, and fileName as they are expected by the backend even empty
407417
formData.append('content', '')
408418
formData.append('keepFile', '')
409419
formData.append('fileName', '')
410420
}
411-
412-
// const { id, content, displayOrder, file, keepFile } = item
413-
// const fileName = file ? file.name : ''
414-
415-
// formData.append('id', id ? id.toString() : '0')
416-
// formData.append('content', content)
417-
// formData.append('displayOrder', displayOrder.toString())
418-
// formData.append('keepFile', keepFile.toString())
419-
// formData.append('fileName', fileName)
420-
// if (file) {
421-
// formData.append('file', file)
422-
// }
423421
})
424422

425423
return formData

src/collections/infra/repositories/transformers/collectionFeaturedItemsTransformer.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,30 @@
11
import {
22
CollectionFeaturedItem,
33
CustomFeaturedItem,
4-
DvObjectFeaturedItem
4+
DvObjectFeaturedItem,
5+
DvObjectFeaturedItemType
56
} from '../../../domain/models/CollectionFeaturedItem'
67
import {
78
CollectionFeaturedItemPayload,
89
DvObjectFeaturedItemPayload
910
} from './CollectionFeaturedItemPayload'
1011

11-
const dvObjectTypeMap: Record<DvObjectFeaturedItemPayload['type'], DvObjectFeaturedItem['type']> = {
12-
dataverse: 'collection',
13-
dataset: 'dataset',
14-
datafile: 'file'
12+
const apiTypeToDomainType: Record<
13+
DvObjectFeaturedItemPayload['type'],
14+
DvObjectFeaturedItem['type']
15+
> = {
16+
dataverse: DvObjectFeaturedItemType.COLLECTION,
17+
dataset: DvObjectFeaturedItemType.DATASET,
18+
datafile: DvObjectFeaturedItemType.FILE
19+
}
20+
21+
export const domainTypeToApiType: Record<
22+
DvObjectFeaturedItem['type'],
23+
DvObjectFeaturedItemPayload['type']
24+
> = {
25+
[DvObjectFeaturedItemType.COLLECTION]: 'dataverse',
26+
[DvObjectFeaturedItemType.DATASET]: 'dataset',
27+
[DvObjectFeaturedItemType.FILE]: 'datafile'
1528
}
1629

1730
export const transformCollectionFeaturedItemsPayloadToCollectionFeaturedItems = (
@@ -32,10 +45,10 @@ export const transformCollectionFeaturedItemsPayloadToCollectionFeaturedItems =
3245
return customFeaturedItem
3346
} else {
3447
// Map API types to domain types
35-
const type = dvObjectTypeMap[item.type]
48+
const type = apiTypeToDomainType[item.type]
3649

3750
if (!type) {
38-
throw new Error(`Unknown dvObject type: ${item.type}`)
51+
throw new Error(`Unknown type: ${item.type}`)
3952
}
4053

4154
const dvObjectFeaturedItem: DvObjectFeaturedItem = {

0 commit comments

Comments
 (0)