Skip to content

Commit 9c7e9d8

Browse files
authored
Merge pull request #406 from IQSS/398-use-cases-of-adding-and-deleting-a-new-template
Use Cases of Get and Delete a template
2 parents 2b54d0a + 355ac27 commit 9c7e9d8

33 files changed

+732
-327
lines changed

CHANGELOG.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,21 @@ This changelog follows the principles of [Keep a Changelog](https://keepachangel
88

99
### Added
1010

11+
- Datasets: Added `updateDatasetLicense` use case and repository method to support Dataverse endpoint `PUT /datasets/{id}/license`, for updating dataset license or custom terms.
1112
- Datasets: Added `getDatasetStorageDriver` use case and repository method to support Dataverse endpoint `GET /datasets/{identifier}/storageDriver`, for retrieving dataset storage driver configuration with properties: name, type, label, directUpload, directDownload, and uploadOutOfBand.
1213
- Datasets: Added `updateDatasetLicense` use case and repository method to support Dataverse endpoint `PUT /datasets/{id}/license`, for updating dataset license or custom terms
1314
- New Use Case: [Get Collections For Linking Use Case](./docs/useCases.md#get-collections-for-linking).
14-
- New Use Case: [Create a Dataset Template](./docs/useCases.md#create-a-dataset-template) under Collections.
15-
15+
- New Use Case: [Create a Template](./docs/useCases.md#create-a-template) under Templates.
16+
- New Use Case: [Get a Template](./docs/useCases.md#get-a-template) under Templates.
17+
- New Use Case: [Delete a Template](./docs/useCases.md#delete-a-template) under Templates.
1618
- New Use Case: [Update Terms of Access](./docs/useCases.md#update-terms-of-access).
1719

1820
### Changed
1921

20-
- Add pagination query parameters to Dataset Version Summeries and File Version Summaries use cases
22+
- Add pagination query parameters to Dataset Version Summeries and File Version Summaries use cases.
23+
- Templates: Rename `CreateDatasetTemplateDTO` to `CreateTemplateDTO`.
24+
- Templates: Rename `createDatasetTemplate` repository method to `createTemplate`.
25+
- Templates: Rename `getDatasetTemplates` repository method to `getTemplatesByCollectionId`.
2126

2227
### Fixed
2328

@@ -52,7 +57,7 @@ This changelog follows the principles of [Keep a Changelog](https://keepachangel
5257

5358
- Use cases for External Tools: GetExternalTools, GetDatasetExternalToolResolved, GetFileExternalToolResolved.
5459

55-
- Use case: GetDatasetTemplates.
60+
- Use case: GetTemplatesByCollectionId.
5661

5762
- Use case: GetAvailableStandardLicenses.
5863

docs/useCases.md

Lines changed: 76 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,13 @@ The different use cases currently available in the package are classified below,
2525
- [Update Collection Featured Items](#update-collection-featured-items)
2626
- [Delete Collection Featured Items](#delete-collection-featured-items)
2727
- [Delete a Collection Featured Item](#delete-a-collection-featured-item)
28-
- [Create a Dataset Template](#create-a-dataset-template)
28+
- [Templates](#Templates)
29+
- [Templates read use cases](#templates-read-use-cases)
30+
- [Get a Template](#get-a-template)
31+
- [Get Templates By Collection Id](#get-templates-by-collection-id)
32+
- [Templates write use cases](#templates-write-use-cases)
33+
- [Create a Template](#create-a-template)
34+
- [Delete a Template](#delete-a-template)
2935
- [Datasets](#Datasets)
3036
- [Datasets read use cases](#datasets-read-use-cases)
3137
- [Get a Dataset](#get-a-dataset)
@@ -570,18 +576,60 @@ deleteCollectionFeaturedItem.execute(featuredItemId)
570576

571577
_See [use case](../src/collections/domain/useCases/DeleteCollectionFeaturedItem.ts)_ definition.
572578

573-
#### Create a Dataset Template
579+
## Templates
574580

575-
Creates a dataset template for a given Dataverse collection id or alias.
581+
### Templates Read Use Cases
582+
583+
#### Get a Template
584+
585+
Returns a [Template](../src/templates/domain/models/Template.ts) by its template id.
586+
587+
##### Example call:
588+
589+
```typescript
590+
import { getTemplate } from '@iqss/dataverse-client-javascript'
591+
592+
const templateId = 12345
593+
594+
getTemplate.execute(templateId).then((template: Template) => {
595+
/* ... */
596+
})
597+
```
598+
599+
_See [use case](../src/templates/domain/useCases/GetTemplate.ts)_ definition.
600+
601+
#### Get Templates By Collection Id
602+
603+
Returns a [Template](../src/templates/domain/models/Template.ts) array containing the templates of the requested collection, given the collection identifier or alias.
604+
605+
##### Example call:
606+
607+
```typescript
608+
import { getTemplatesByCollectionId } from '@iqss/dataverse-client-javascript'
609+
610+
const collectionIdOrAlias = 12345
611+
612+
getTemplatesByCollectionId.execute(collectionIdOrAlias).then((template: Template[]) => {
613+
/* ... */
614+
})
615+
```
616+
617+
_See [use case](../src/templates/domain/useCases/GetTemplatesByCollectionId.ts)_ definition.
618+
619+
### Templates Write Use Cases
620+
621+
#### Create a Template
622+
623+
Creates a template for a given Dataverse collection id or alias.
576624

577625
##### Example call:
578626

579627
```typescript
580-
import { createDatasetTemplate } from '@iqss/dataverse-client-javascript'
581-
import { TemplateCreateDTO } from '@iqss/dataverse-client-javascript'
628+
import { createTemplate } from '@iqss/dataverse-client-javascript'
629+
import { CreateTemplateDTO } from '@iqss/dataverse-client-javascript'
582630

583631
const collectionAlias = ':root'
584-
const template: TemplateCreateDTO = {
632+
const template: CreateTemplateDTO = {
585633
name: 'Dataverse template',
586634
isDefault: true,
587635
fields: [
@@ -600,10 +648,26 @@ const template: TemplateCreateDTO = {
600648
instructions: [{ instructionField: 'author', instructionText: 'The author data' }]
601649
}
602650

603-
await createDatasetTemplate.execute(template, collectionAlias)
651+
await createTemplate.execute(template, collectionAlias)
652+
```
653+
654+
_See [use case](../src/templates/domain/useCases/CreateTemplate.ts) implementation_.
655+
656+
#### Delete a Template
657+
658+
Deletes a template by its template id.
659+
660+
##### Example call:
661+
662+
```typescript
663+
import { deleteTemplate } from '@iqss/dataverse-client-javascript'
664+
665+
const templateId = 12345
666+
667+
await deleteTemplate.execute(templateId)
604668
```
605669

606-
_See [use case](../src/collections/domain/useCases/CreateDatasetTemplate.ts) implementation_.
670+
_See [use case](../src/templates/domain/useCases/DeleteTemplate.ts)_ definition.
607671

608672
## Datasets
609673

@@ -1334,6 +1398,8 @@ _See [use case](../src/datasets/domain/useCases/GetDatasetAvailableCategories.ts
13341398

13351399
The `datasetId` parameter is a number for numeric identifiers or string for persistent identifiers.
13361400

1401+
# <<<<<<< HEAD
1402+
13371403
#### Get Dataset Templates
13381404

13391405
Returns a [DatasetTemplate](../src/datasets/domain/models/DatasetTemplate.ts) array containing the dataset templates of the requested collection, given the collection identifier or alias.
@@ -1376,6 +1442,8 @@ _See [use case](../src/datasets/domain/useCases/GetDatasetStorageDriver.ts) impl
13761442

13771443
The `datasetId` parameter can be a string, for persistent identifiers, or a number, for numeric identifiers.
13781444

1445+
> > > > > > > develop
1446+
13791447
#### Add a Dataset Type
13801448

13811449
Adds a dataset types that can be used at dataset creation.

src/collections/domain/repositories/ICollectionsRepository.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import { CollectionItemType } from '../../../collections/domain/models/Collectio
1212
import { CollectionLinks } from '../models/CollectionLinks'
1313
import { CollectionSummary } from '../models/CollectionSummary'
1414
import { LinkingObjectType } from '../useCases/GetCollectionsForLinking'
15-
import { CreateDatasetTemplateDTO } from '../dtos/CreateDatasetTemplateDTO'
1615

1716
export interface ICollectionsRepository {
1817
getCollection(collectionIdOrAlias: number | string): Promise<Collection>
@@ -69,8 +68,4 @@ export interface ICollectionsRepository {
6968
searchTerm: string,
7069
alreadyLinked: boolean
7170
): Promise<CollectionSummary[]>
72-
createDatasetTemplate(
73-
collectionIdOrAlias: number | string,
74-
template: CreateDatasetTemplateDTO
75-
): Promise<void>
7671
}

src/collections/domain/useCases/CreateDatasetTemplate.ts

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/collections/index.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { LinkCollection } from './domain/useCases/LinkCollection'
1616
import { UnlinkCollection } from './domain/useCases/UnlinkCollection'
1717
import { GetCollectionLinks } from './domain/useCases/GetCollectionLinks'
1818
import { GetCollectionsForLinking } from './domain/useCases/GetCollectionsForLinking'
19-
import { CreateDatasetTemplate } from './domain/useCases/CreateDatasetTemplate'
2019

2120
const collectionsRepository = new CollectionsRepository()
2221

@@ -37,7 +36,6 @@ const linkCollection = new LinkCollection(collectionsRepository)
3736
const unlinkCollection = new UnlinkCollection(collectionsRepository)
3837
const getCollectionLinks = new GetCollectionLinks(collectionsRepository)
3938
const getCollectionsForLinking = new GetCollectionsForLinking(collectionsRepository)
40-
const createDatasetTemplate = new CreateDatasetTemplate(collectionsRepository)
4139

4240
export {
4341
getCollection,
@@ -56,8 +54,7 @@ export {
5654
linkCollection,
5755
unlinkCollection,
5856
getCollectionLinks,
59-
getCollectionsForLinking,
60-
createDatasetTemplate
57+
getCollectionsForLinking
6158
}
6259
export { Collection, CollectionInputLevel } from './domain/models/Collection'
6360
export { CollectionFacet } from './domain/models/CollectionFacet'

src/collections/infra/repositories/CollectionsRepository.ts

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ import { ReadError } from '../../../core/domain/repositories/ReadError'
4040
import { CollectionLinks } from '../../domain/models/CollectionLinks'
4141
import { CollectionSummary } from '../../domain/models/CollectionSummary'
4242
import { LinkingObjectType } from '../../domain/useCases/GetCollectionsForLinking'
43-
import { CreateDatasetTemplateDTO } from '../../domain/dtos/CreateDatasetTemplateDTO'
4443

4544
export interface NewCollectionRequestPayload {
4645
alias: string
@@ -529,18 +528,4 @@ export class CollectionsRepository extends ApiRepository implements ICollections
529528
throw error
530529
})
531530
}
532-
533-
public async createDatasetTemplate(
534-
collectionIdOrAlias: number | string,
535-
template: CreateDatasetTemplateDTO
536-
): Promise<void> {
537-
return this.doPost(
538-
`/${this.collectionsResourceName}/${collectionIdOrAlias}/templates`,
539-
template
540-
)
541-
.then(() => undefined)
542-
.catch((error) => {
543-
throw error
544-
})
545-
}
546531
}

src/datasets/domain/repositories/IDatasetsRepository.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import { DatasetVersionSummarySubset } from '../models/DatasetVersionSummaryInfo
1212
import { DatasetLinkedCollection } from '../models/DatasetLinkedCollection'
1313
import { CitationFormat } from '../models/CitationFormat'
1414
import { FormattedCitation } from '../models/FormattedCitation'
15-
import { DatasetTemplate } from '../models/DatasetTemplate'
1615
import { DatasetType } from '../models/DatasetType'
1716
import { TermsOfAccess } from '../models/Dataset'
1817
import { DatasetLicenseUpdateRequest } from '../dtos/DatasetLicenseUpdateRequest'
@@ -85,7 +84,6 @@ export interface IDatasetsRepository {
8584
format: CitationFormat,
8685
includeDeaccessioned?: boolean
8786
): Promise<FormattedCitation>
88-
getDatasetTemplates(collectionIdOrAlias: number | string): Promise<DatasetTemplate[]>
8987
getDatasetAvailableDatasetTypes(): Promise<DatasetType[]>
9088
getDatasetAvailableDatasetType(datasetTypeId: number | string): Promise<DatasetType>
9189
addDatasetType(datasetType: DatasetTypeDTO): Promise<DatasetType>

src/datasets/domain/useCases/GetDatasetTemplates.ts

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/datasets/index.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import { LinkDatasetTypeWithMetadataBlocks } from './domain/useCases/LinkDataset
3131
import { SetAvailableLicensesForDatasetType } from './domain/useCases/SetAvailableLicensesForDatasetType'
3232
import { DeleteDatasetType } from './domain/useCases/DeleteDatasetType'
3333
import { GetDatasetCitationInOtherFormats } from './domain/useCases/GetDatasetCitationInOtherFormats'
34-
import { GetDatasetTemplates } from './domain/useCases/GetDatasetTemplates'
3534
import { UpdateTermsOfAccess } from './domain/useCases/UpdateTermsOfAccess'
3635
import { UpdateDatasetLicense } from './domain/useCases/UpdateDatasetLicense'
3736
import { GetDatasetStorageDriver } from './domain/useCases/GetDatasetStorageDriver'
@@ -82,7 +81,6 @@ const setAvailableLicensesForDatasetType = new SetAvailableLicensesForDatasetTyp
8281
)
8382
const deleteDatasetType = new DeleteDatasetType(datasetsRepository)
8483
const getDatasetCitationInOtherFormats = new GetDatasetCitationInOtherFormats(datasetsRepository)
85-
const getDatasetTemplates = new GetDatasetTemplates(datasetsRepository)
8684
const updateTermsOfAccess = new UpdateTermsOfAccess(datasetsRepository)
8785
const updateDatasetLicense = new UpdateDatasetLicense(datasetsRepository)
8886
const getDatasetStorageDriver = new GetDatasetStorageDriver(datasetsRepository)
@@ -109,7 +107,6 @@ export {
109107
getDatasetLinkedCollections,
110108
getDatasetAvailableCategories,
111109
getDatasetCitationInOtherFormats,
112-
getDatasetTemplates,
113110
updateTermsOfAccess,
114111
getDatasetAvailableDatasetTypes,
115112
getDatasetAvailableDatasetType,

src/datasets/infra/repositories/DatasetsRepository.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { AxiosResponse } from 'axios'
21
import { ApiRepository } from '../../../core/infra/repositories/ApiRepository'
32
import { IDatasetsRepository } from '../../domain/repositories/IDatasetsRepository'
43
import { Dataset, VersionUpdateType } from '../../domain/models/Dataset'
@@ -25,9 +24,6 @@ import { DatasetLinkedCollection } from '../../domain/models/DatasetLinkedCollec
2524
import { CitationFormat } from '../../domain/models/CitationFormat'
2625
import { transformDatasetLinkedCollectionsResponseToDatasetLinkedCollection } from './transformers/datasetLinkedCollectionsTransformers'
2726
import { FormattedCitation } from '../../domain/models/FormattedCitation'
28-
import { DatasetTemplate } from '../../domain/models/DatasetTemplate'
29-
import { DatasetTemplatePayload } from './transformers/DatasetTemplatePayload'
30-
import { transformDatasetTemplatePayloadToDatasetTemplate } from './transformers/datasetTemplateTransformers'
3127
import { DatasetType } from '../../domain/models/DatasetType'
3228
import { TermsOfAccess } from '../../domain/models/Dataset'
3329
import { transformTermsOfAccessToUpdatePayload } from './transformers/termsOfAccessTransformers'
@@ -403,18 +399,6 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi
403399
})
404400
}
405401

406-
public async getDatasetTemplates(
407-
collectionIdOrAlias: number | string
408-
): Promise<DatasetTemplate[]> {
409-
return this.doGet(`/dataverses/${collectionIdOrAlias}/templates`, true)
410-
.then((response: AxiosResponse<{ data: DatasetTemplatePayload[] }>) =>
411-
transformDatasetTemplatePayloadToDatasetTemplate(response.data.data)
412-
)
413-
.catch((error) => {
414-
throw error
415-
})
416-
}
417-
418402
public async getDatasetAvailableDatasetTypes(): Promise<DatasetType[]> {
419403
return this.doGet(this.buildApiEndpoint(this.datasetsResourceName, 'datasetTypes'))
420404
.then((response) => response.data.data)

0 commit comments

Comments
 (0)