Skip to content

Commit a899f65

Browse files
committed
feat: update model and transformer
1 parent 67d3b0e commit a899f65

File tree

6 files changed

+54
-13
lines changed

6 files changed

+54
-13
lines changed
Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { CollectionType } from '../models/CollectionType'
2+
13
export interface CollectionDTO {
24
alias: string
35
name: string
@@ -15,15 +17,3 @@ export interface CollectionInputLevelDTO {
1517
include: boolean
1618
required: boolean
1719
}
18-
19-
export enum CollectionType {
20-
RESEARCHERS = 'RESEARCHERS',
21-
RESEARCH_PROJECTS = 'RESEARCH_PROJECTS',
22-
JOURNALS = 'JOURNALS',
23-
ORGANIZATIONS_INSTITUTIONS = 'ORGANIZATIONS_INSTITUTIONS',
24-
TEACHING_COURSES = 'TEACHING_COURSES',
25-
UNCATEGORIZED = 'UNCATEGORIZED',
26-
LABORATORY = 'LABORATORY',
27-
RESEARCH_GROUP = 'RESEARCH_GROUP',
28-
DEPARTMENT = 'DEPARTMENT'
29-
}

src/collections/domain/models/Collection.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import { DvObjectOwnerNode } from '../../../core'
2+
import { CollectionContact } from './CollectionContact'
3+
import { CollectionType } from './CollectionType'
24

35
export interface Collection {
46
id: number
@@ -9,6 +11,10 @@ export interface Collection {
911
description?: string
1012
isPartOf: DvObjectOwnerNode
1113
inputLevels?: CollectionInputLevel[]
14+
type: CollectionType
15+
contacts?: CollectionContact[]
16+
usesMetadataFieldsFromParent: boolean
17+
usesBrowseSearchFacetsFromParent: boolean
1218
}
1319

1420
export interface CollectionInputLevel {
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export interface CollectionContact {
2+
email: string
3+
displayOrder: number
4+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export enum CollectionType {
2+
RESEARCHERS = 'RESEARCHERS',
3+
RESEARCH_PROJECTS = 'RESEARCH_PROJECTS',
4+
JOURNALS = 'JOURNALS',
5+
ORGANIZATIONS_INSTITUTIONS = 'ORGANIZATIONS_INSTITUTIONS',
6+
TEACHING_COURSES = 'TEACHING_COURSES',
7+
UNCATEGORIZED = 'UNCATEGORIZED',
8+
LABORATORY = 'LABORATORY',
9+
RESEARCH_GROUP = 'RESEARCH_GROUP',
10+
DEPARTMENT = 'DEPARTMENT'
11+
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,19 @@ export interface CollectionPayload {
99
description?: string
1010
isPartOf: OwnerNodePayload
1111
inputLevels?: CollectionInputLevelPayload[]
12+
dataverseContacts?: CollectionContactPayload[]
13+
dataverseType: string
14+
usesMetadataFieldsFromParent: boolean
15+
usesBrowseSearchFacetsFromParent: boolean
1216
}
1317

1418
export interface CollectionInputLevelPayload {
1519
datasetFieldTypeName: string
1620
required: boolean
1721
include: boolean
1822
}
23+
24+
export interface CollectionContactPayload {
25+
contactEmail: string
26+
displayOrder: number
27+
}

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

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { Collection, CollectionInputLevel } from '../../../domain/models/Collection'
22
import { AxiosResponse } from 'axios'
3-
import { CollectionInputLevelPayload, CollectionPayload } from './CollectionPayload'
3+
import {
4+
CollectionContactPayload,
5+
CollectionInputLevelPayload,
6+
CollectionPayload
7+
} from './CollectionPayload'
48
import { transformPayloadToOwnerNode } from '../../../../core/infra/repositories/transformers/dvObjectOwnerNodeTransformer'
59
import { transformHtmlToMarkdown } from '../../../../datasets/infra/repositories/transformers/datasetTransformers'
610
import { CollectionFacet } from '../../../domain/models/CollectionFacet'
@@ -15,6 +19,8 @@ import { transformFilePreviewPayloadToFilePreview } from '../../../../files/infr
1519
import { transformCollectionPreviewPayloadToCollectionPreview } from './collectionPreviewsTransformers'
1620
import { CollectionPreviewPayload } from './CollectionPreviewPayload'
1721
import { CollectionPreview } from '../../../domain/models/CollectionPreview'
22+
import { CollectionContact } from '../../../domain/models/CollectionContact'
23+
import { CollectionType } from '../../../domain/models/CollectionType'
1824

1925
export const transformCollectionResponseToCollection = (response: AxiosResponse): Collection => {
2026
const collectionPayload = response.data.data
@@ -39,6 +45,9 @@ const transformPayloadToCollection = (collectionPayload: CollectionPayload): Col
3945
name: collectionPayload.name,
4046
isReleased: collectionPayload.isReleased,
4147
affiliation: collectionPayload.affiliation,
48+
type: collectionPayload.dataverseType as CollectionType,
49+
usesMetadataFieldsFromParent: true, // collectionPayload.usesMetadataFieldsFromParent // TODO:ME - Remove hardcoded value once https://github.com/IQSS/dataverse/issues/11012 is done
50+
usesBrowseSearchFacetsFromParent: true, // collectionPayload.usesBrowseSearchFacetsFromParent collectionPayload.usesMetadataFieldsFromParent // TODO:ME - Remove hardcoded value once https://github.com/IQSS/dataverse/issues/11012 is done
4251
...(collectionPayload.description && {
4352
description: transformHtmlToMarkdown(collectionPayload.description)
4453
}),
@@ -47,6 +56,9 @@ const transformPayloadToCollection = (collectionPayload: CollectionPayload): Col
4756
}),
4857
...(collectionPayload.inputLevels && {
4958
inputLevels: transformInputLevelsPayloadToInputLevels(collectionPayload.inputLevels)
59+
}),
60+
...(collectionPayload.dataverseContacts && {
61+
contacts: transformContactsPayloadToContacts(collectionPayload.dataverseContacts)
5062
})
5163
}
5264
return collectionModel
@@ -90,3 +102,12 @@ export const transformCollectionItemsResponseToCollectionItemSubset = (
90102
totalItemCount: responseDataPayload.total_count
91103
}
92104
}
105+
106+
const transformContactsPayloadToContacts = (
107+
contactsPayload: CollectionContactPayload[]
108+
): CollectionContact[] => {
109+
return contactsPayload.map((contactPayload) => ({
110+
email: contactPayload.contactEmail,
111+
displayOrder: contactPayload.displayOrder
112+
}))
113+
}

0 commit comments

Comments
 (0)