Skip to content

Commit 0ec433f

Browse files
committed
refactor: update license handling across dataset models and transformers
1 parent d06e2cb commit 0ec433f

File tree

8 files changed

+35
-48
lines changed

8 files changed

+35
-48
lines changed

src/datasets/domain/models/Dataset.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { DvObjectOwnerNode } from '../../../core/domain/models/DvObjectOwnerNode'
2+
import { License } from '../../../licenses'
23

34
export interface Dataset {
45
id: number
@@ -32,11 +33,7 @@ export enum DatasetVersionState {
3233
DEACCESSIONED = 'DEACCESSIONED'
3334
}
3435

35-
export interface DatasetLicense {
36-
name: string
37-
uri: string
38-
iconUri?: string
39-
}
36+
export type DatasetLicense = Pick<License, 'name' | 'uri' | 'iconUri'>
4037

4138
export interface CustomTerms {
4239
termsOfUse: string

src/datasets/domain/models/DatasetTemplate.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { DatasetLicense, DatasetMetadataBlock, TermsOfUse } from './Dataset'
1+
import { DatasetMetadataBlock, TermsOfUse } from './Dataset'
2+
import { License } from '../../../licenses/domain/models/License'
23

34
export interface DatasetTemplate {
45
id: number
@@ -13,7 +14,7 @@ export interface DatasetTemplate {
1314
instructions: DatasetTemplateInstruction[]
1415
// 👇 From Edit Template Terms
1516
termsOfUse: TermsOfUse
16-
license?: DatasetLicense // This license property is going to be present if not custom terms are added in the UI
17+
license?: License // This license property is going to be present if not custom terms are added in the UI
1718
}
1819

1920
export interface DatasetTemplateInstruction {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export interface DatasetPayload {
1313
lastUpdateTime: string
1414
releaseTime: string
1515
metadataBlocks: MetadataBlocksPayload
16-
license?: LicensePayload
16+
license?: DatasetLicensePayload
1717
alternativePersistentId?: string
1818
publicationDate?: string
1919
citationDate?: string
@@ -38,7 +38,7 @@ export interface DatasetPayload {
3838
deaccessionNote?: string
3939
}
4040

41-
export interface LicensePayload {
41+
export interface DatasetLicensePayload {
4242
name: string
4343
uri: string
4444
iconUri?: string

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

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { LicensePayload } from '../../../../licenses/domain/repositories/transformers/LicensePayload'
12
import { MetadataFieldPayload } from './DatasetPayload'
23

34
export interface DatasetTemplatePayload {
@@ -16,20 +17,7 @@ export interface DatasetTemplatePayload {
1617
id: number
1718
fileAccessRequest: boolean
1819
// This license property is going to be present if not custom terms are added in the UI
19-
license?: {
20-
id: number
21-
name: string
22-
shortDescription: string
23-
uri: string
24-
iconUrl?: string
25-
active: boolean
26-
isDefault: boolean
27-
sortOrder: number
28-
rightsIdentifier: string
29-
rightsIdentifierScheme?: string
30-
schemeUri: string
31-
languageCode: string
32-
}
20+
license?: LicensePayload
3321
// Below fields are going to be present if are added in "Restricted Files + Terms of Access"
3422
termsOfAccess?: string // This is terms of access for restricted files in the JSF UI
3523
dataAccessPlace?: string

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { transformPayloadLicenseToLicense } from '../../../../licenses/domain/repositories/transformers/licenseTransformers'
12
import { DatasetTemplate } from '../../../domain/models/DatasetTemplate'
23
import { DatasetTemplatePayload } from './DatasetTemplatePayload'
34
import { transformPayloadToDatasetMetadataBlocks } from './datasetTransformers'
@@ -34,11 +35,9 @@ export const transformDatasetTemplatePayloadToDatasetTemplate = (
3435
}
3536

3637
if (payload.termsOfUseAndAccess.license) {
37-
datasetTemplate.license = {
38-
name: payload.termsOfUseAndAccess.license.name,
39-
uri: payload.termsOfUseAndAccess.license.uri,
40-
iconUri: payload.termsOfUseAndAccess.license.iconUrl
41-
}
38+
datasetTemplate.license = transformPayloadLicenseToLicense(
39+
payload.termsOfUseAndAccess.license
40+
)
4241
} else {
4342
datasetTemplate.termsOfUse.customTerms = {
4443
termsOfUse: payload.termsOfUseAndAccess.termsOfUse as string,

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
import { AxiosResponse } from 'axios'
1212
import {
1313
DatasetPayload,
14-
LicensePayload,
14+
DatasetLicensePayload,
1515
MetadataFieldPayload,
1616
MetadataBlocksPayload,
1717
MetadataFieldValuePayload,
@@ -261,7 +261,7 @@ export const transformVersionPayloadToDataset = (
261261
}
262262
if ('license' in versionPayload) {
263263
datasetModel.license = transformPayloadToDatasetLicense(
264-
versionPayload.license as LicensePayload
264+
versionPayload.license as DatasetLicensePayload
265265
)
266266
} else {
267267
datasetModel.termsOfUse.customTerms = {
@@ -297,7 +297,7 @@ export const transformVersionPayloadToDataset = (
297297
}
298298

299299
const transformPayloadToDatasetLicense = (
300-
licensePayload: LicensePayload
300+
licensePayload: DatasetLicensePayload
301301
): DatasetLicense | undefined => {
302302
if (!licensePayload) {
303303
return undefined

src/licenses/domain/repositories/transformers/licenseTransformers.ts

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,23 @@ import { AxiosResponse } from 'axios'
22
import { License } from '../../models/License'
33
import { LicensePayload } from './LicensePayload'
44

5-
export const transformPayloadToLicense = (response: AxiosResponse): License[] => {
5+
export const transformPayloadToLicenses = (response: AxiosResponse): License[] => {
66
const payload = response.data.data as LicensePayload[]
77

8-
return payload.map((license: LicensePayload) => ({
9-
id: license.id,
10-
name: license.name,
11-
shortDescription: license.shortDescription,
12-
uri: license.uri,
13-
iconUri: license.iconUrl, // in payload, it is called iconUrl, but iconUri is the name matching everywhere else
14-
active: license.active,
15-
isDefault: license.isDefault,
16-
sortOrder: license.sortOrder,
17-
rightsIdentifier: license.rightsIdentifier,
18-
rightsIdentifierScheme: license.rightsIdentifierScheme,
19-
schemeUri: license.schemeUri,
20-
languageCode: license.languageCode
21-
}))
8+
return payload.map((license: LicensePayload) => transformPayloadLicenseToLicense(license))
229
}
10+
11+
export const transformPayloadLicenseToLicense = (license: LicensePayload): License => ({
12+
id: license.id,
13+
name: license.name,
14+
shortDescription: license.shortDescription,
15+
uri: license.uri,
16+
iconUri: license.iconUrl, // in payload, it is called iconUrl, but iconUri is the name matching everywhere else
17+
active: license.active,
18+
isDefault: license.isDefault,
19+
sortOrder: license.sortOrder,
20+
rightsIdentifier: license.rightsIdentifier,
21+
rightsIdentifierScheme: license.rightsIdentifierScheme,
22+
schemeUri: license.schemeUri,
23+
languageCode: license.languageCode
24+
})

src/licenses/infra/repositories/LicensesRepository.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { ApiRepository } from '../../../core/infra/repositories/ApiRepository'
22
import { ILicensesRepository } from '../../domain/repositories/ILicensesRepository'
33
import { License } from '../../domain/models/License'
4-
import { transformPayloadToLicense } from '../../domain/repositories/transformers/licenseTransformers'
4+
import { transformPayloadToLicenses } from '../../domain/repositories/transformers/licenseTransformers'
55

66
export class LicensesRepository extends ApiRepository implements ILicensesRepository {
77
private readonly licensesResourceName: string = 'licenses'
88

99
public async getAvailableStandardLicenses(): Promise<License[]> {
1010
return this.doGet(this.buildApiEndpoint(this.licensesResourceName))
11-
.then((response) => transformPayloadToLicense(response))
11+
.then((response) => transformPayloadToLicenses(response))
1212
.catch((error) => {
1313
throw error
1414
})

0 commit comments

Comments
 (0)