Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,14 @@ This changelog follows the principles of [Keep a Changelog](https://keepachangel
### Added

- Datasets: Added `updateDatasetLicense` use case and repository method to support Dataverse endpoint `PUT /datasets/{id}/license`, for updating dataset license or custom terms

- New Use Case: [Get Collections For Linking Use Case](./docs/useCases.md#get-collections-for-linking).
- New Use Case: [Create a Dataset Template](./docs/useCases.md#create-a-dataset-template) under Collections.

- New Use Case: [Create a Template](./docs/useCases.md#create-a-template) under Templates.

- New Use Case: [Get a Template](./docs/useCases.md#get-a-template) under Templates.

- New Use Case: [Delete a Template](./docs/useCases.md#delete-a-template) under Templates.
Comment thread
ChengShi-1 marked this conversation as resolved.
Outdated

- New Use Case: [Update Terms of Access](./docs/useCases.md#update-terms-of-access).

Expand Down
99 changes: 72 additions & 27 deletions docs/useCases.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,13 @@ The different use cases currently available in the package are classified below,
- [Update Collection Featured Items](#update-collection-featured-items)
- [Delete Collection Featured Items](#delete-collection-featured-items)
- [Delete a Collection Featured Item](#delete-a-collection-featured-item)
- [Create a Dataset Template](#create-a-dataset-template)
- [Templates](#Templates)
- [Templates read use cases](#templates-read-use-cases)
- [Get a Template](#get-a-template)
- [Get Dataset Templates](#get-dataset-templates)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need to update the useCase docs with the new function name

- [Templates write use cases](#templates-write-use-cases)
- [Create a Template](#create-a-template)
- [Delete a Template](#delete-a-template)
- [Datasets](#Datasets)
- [Datasets read use cases](#datasets-read-use-cases)
- [Get a Dataset](#get-a-dataset)
Expand All @@ -40,7 +46,6 @@ The different use cases currently available in the package are classified below,
- [Get Dataset Versions Summaries](#get-dataset-versions-summaries)
- [Get Dataset Linked Collections](#get-dataset-linked-collections)
- [Get Dataset Available Categories](#get-dataset-available-categories)
- [Get Dataset Templates](#get-dataset-templates)
- [Get Dataset Available Dataset Types](#get-dataset-available-dataset-types)
- [Get Dataset Available Dataset Type](#get-dataset-available-dataset-type)
- [Datasets write use cases](#datasets-write-use-cases)
Expand Down Expand Up @@ -569,18 +574,60 @@ deleteCollectionFeaturedItem.execute(featuredItemId)

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

#### Create a Dataset Template
## Templates

### Templates Read Use Cases

#### Get a Template

Creates a dataset template for a given Dataverse collection id or alias.
Returns a [Template](../src/templates/domain/models/Template.ts) by its template id.

##### Example call:

```typescript
import { createDatasetTemplate } from '@iqss/dataverse-client-javascript'
import { TemplateCreateDTO } from '@iqss/dataverse-client-javascript'
import { getTemplate } from '@iqss/dataverse-client-javascript'

const templateId = 12345

getTemplate.execute(templateId).then((template: Template) => {
/* ... */
})
```

_See [use case](../src/templates/domain/useCases/GetTemplate.ts)_ definition.

#### Get Dataset Templates
Comment thread
ChengShi-1 marked this conversation as resolved.
Outdated

Returns a [Template](../src/templates/domain/models/Template.ts) array containing the templates of the requested collection, given the collection identifier or alias.

##### Example call:

```typescript
import { getDatasetTemplates } from '@iqss/dataverse-client-javascript'

const collectionIdOrAlias = 12345

getDatasetTemplates.execute(collectionIdOrAlias).then((datasetTemplates: Template[]) => {
/* ... */
})
```

_See [use case](../src/templates/domain/useCases/GetDatasetTemplates.ts)_ definition.

### Templates Write Use Cases

#### Create a Template

Creates a template for a given Dataverse collection id or alias.

##### Example call:

```typescript
import { createTemplate } from '@iqss/dataverse-client-javascript'
import { CreateDatasetTemplateDTO } from '@iqss/dataverse-client-javascript'

const collectionAlias = ':root'
const template: TemplateCreateDTO = {
const template: CreateDatasetTemplateDTO = {
name: 'Dataverse template',
isDefault: true,
fields: [
Expand All @@ -599,10 +646,26 @@ const template: TemplateCreateDTO = {
instructions: [{ instructionField: 'author', instructionText: 'The author data' }]
}

await createDatasetTemplate.execute(template, collectionAlias)
await createTemplate.execute(template, collectionAlias)
```

_See [use case](../src/templates/domain/useCases/CreateTemplate.ts) implementation_.

#### Delete a Template

Deletes a template by its template id.

##### Example call:

```typescript
import { deleteTemplate } from '@iqss/dataverse-client-javascript'

const templateId = 12345

await deleteTemplate.execute(templateId)
```

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

## Datasets

Expand Down Expand Up @@ -1333,24 +1396,6 @@ _See [use case](../src/datasets/domain/useCases/GetDatasetAvailableCategories.ts

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

#### Get Dataset Templates

Returns a [DatasetTemplate](../src/datasets/domain/models/DatasetTemplate.ts) array containing the dataset templates of the requested collection, given the collection identifier or alias.

##### Example call:

```typescript
import { getDatasetTemplates } from '@iqss/dataverse-client-javascript'

const collectionIdOrAlias = 12345

getDatasetTemplates.execute(collectionIdOrAlias).then((datasetTemplates: DatasetTemplate[]) => {
/* ... */
})
```

_See [use case](../src/datasets/domain/useCases/GetDatasetTemplates.ts)_ definition.

#### Add a Dataset Type

Adds a dataset types that can be used at dataset creation.
Expand Down
5 changes: 0 additions & 5 deletions src/collections/domain/repositories/ICollectionsRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import { CollectionItemType } from '../../../collections/domain/models/Collectio
import { CollectionLinks } from '../models/CollectionLinks'
import { CollectionSummary } from '../models/CollectionSummary'
import { LinkingObjectType } from '../useCases/GetCollectionsForLinking'
import { CreateDatasetTemplateDTO } from '../dtos/CreateDatasetTemplateDTO'

export interface ICollectionsRepository {
getCollection(collectionIdOrAlias: number | string): Promise<Collection>
Expand Down Expand Up @@ -69,8 +68,4 @@ export interface ICollectionsRepository {
searchTerm: string,
alreadyLinked: boolean
): Promise<CollectionSummary[]>
createDatasetTemplate(
collectionIdOrAlias: number | string,
template: CreateDatasetTemplateDTO
): Promise<void>
}
5 changes: 1 addition & 4 deletions src/collections/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import { LinkCollection } from './domain/useCases/LinkCollection'
import { UnlinkCollection } from './domain/useCases/UnlinkCollection'
import { GetCollectionLinks } from './domain/useCases/GetCollectionLinks'
import { GetCollectionsForLinking } from './domain/useCases/GetCollectionsForLinking'
import { CreateDatasetTemplate } from './domain/useCases/CreateDatasetTemplate'

const collectionsRepository = new CollectionsRepository()

Expand All @@ -37,7 +36,6 @@ const linkCollection = new LinkCollection(collectionsRepository)
const unlinkCollection = new UnlinkCollection(collectionsRepository)
const getCollectionLinks = new GetCollectionLinks(collectionsRepository)
const getCollectionsForLinking = new GetCollectionsForLinking(collectionsRepository)
const createDatasetTemplate = new CreateDatasetTemplate(collectionsRepository)

export {
getCollection,
Expand All @@ -56,8 +54,7 @@ export {
linkCollection,
unlinkCollection,
getCollectionLinks,
getCollectionsForLinking,
createDatasetTemplate
getCollectionsForLinking
}
export { Collection, CollectionInputLevel } from './domain/models/Collection'
export { CollectionFacet } from './domain/models/CollectionFacet'
Expand Down
15 changes: 0 additions & 15 deletions src/collections/infra/repositories/CollectionsRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ import { ReadError } from '../../../core/domain/repositories/ReadError'
import { CollectionLinks } from '../../domain/models/CollectionLinks'
import { CollectionSummary } from '../../domain/models/CollectionSummary'
import { LinkingObjectType } from '../../domain/useCases/GetCollectionsForLinking'
import { CreateDatasetTemplateDTO } from '../../domain/dtos/CreateDatasetTemplateDTO'

export interface NewCollectionRequestPayload {
alias: string
Expand Down Expand Up @@ -529,18 +528,4 @@ export class CollectionsRepository extends ApiRepository implements ICollections
throw error
})
}

public async createDatasetTemplate(
collectionIdOrAlias: number | string,
template: CreateDatasetTemplateDTO
): Promise<void> {
return this.doPost(
`/${this.collectionsResourceName}/${collectionIdOrAlias}/templates`,
template
)
.then(() => undefined)
.catch((error) => {
throw error
})
}
}
2 changes: 0 additions & 2 deletions src/datasets/domain/repositories/IDatasetsRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import { DatasetVersionSummarySubset } from '../models/DatasetVersionSummaryInfo
import { DatasetLinkedCollection } from '../models/DatasetLinkedCollection'
import { CitationFormat } from '../models/CitationFormat'
import { FormattedCitation } from '../models/FormattedCitation'
import { DatasetTemplate } from '../models/DatasetTemplate'
import { DatasetType } from '../models/DatasetType'
import { TermsOfAccess } from '../models/Dataset'
import { DatasetLicenseUpdateRequest } from '../dtos/DatasetLicenseUpdateRequest'
Expand Down Expand Up @@ -84,7 +83,6 @@ export interface IDatasetsRepository {
format: CitationFormat,
includeDeaccessioned?: boolean
): Promise<FormattedCitation>
getDatasetTemplates(collectionIdOrAlias: number | string): Promise<DatasetTemplate[]>
getDatasetAvailableDatasetTypes(): Promise<DatasetType[]>
getDatasetAvailableDatasetType(datasetTypeId: number | string): Promise<DatasetType>
addDatasetType(datasetType: DatasetTypeDTO): Promise<DatasetType>
Expand Down
25 changes: 0 additions & 25 deletions src/datasets/domain/useCases/GetDatasetTemplates.ts

This file was deleted.

3 changes: 0 additions & 3 deletions src/datasets/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import { LinkDatasetTypeWithMetadataBlocks } from './domain/useCases/LinkDataset
import { SetAvailableLicensesForDatasetType } from './domain/useCases/SetAvailableLicensesForDatasetType'
import { DeleteDatasetType } from './domain/useCases/DeleteDatasetType'
import { GetDatasetCitationInOtherFormats } from './domain/useCases/GetDatasetCitationInOtherFormats'
import { GetDatasetTemplates } from './domain/useCases/GetDatasetTemplates'
import { UpdateTermsOfAccess } from './domain/useCases/UpdateTermsOfAccess'
import { UpdateDatasetLicense } from './domain/useCases/UpdateDatasetLicense'

Expand Down Expand Up @@ -81,7 +80,6 @@ const setAvailableLicensesForDatasetType = new SetAvailableLicensesForDatasetTyp
)
const deleteDatasetType = new DeleteDatasetType(datasetsRepository)
const getDatasetCitationInOtherFormats = new GetDatasetCitationInOtherFormats(datasetsRepository)
const getDatasetTemplates = new GetDatasetTemplates(datasetsRepository)
const updateTermsOfAccess = new UpdateTermsOfAccess(datasetsRepository)
const updateDatasetLicense = new UpdateDatasetLicense(datasetsRepository)

Expand All @@ -107,7 +105,6 @@ export {
getDatasetLinkedCollections,
getDatasetAvailableCategories,
getDatasetCitationInOtherFormats,
getDatasetTemplates,
updateTermsOfAccess,
getDatasetAvailableDatasetTypes,
getDatasetAvailableDatasetType,
Expand Down
16 changes: 0 additions & 16 deletions src/datasets/infra/repositories/DatasetsRepository.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { AxiosResponse } from 'axios'
import { ApiRepository } from '../../../core/infra/repositories/ApiRepository'
import { IDatasetsRepository } from '../../domain/repositories/IDatasetsRepository'
import { Dataset, VersionUpdateType } from '../../domain/models/Dataset'
Expand All @@ -25,9 +24,6 @@ import { DatasetLinkedCollection } from '../../domain/models/DatasetLinkedCollec
import { CitationFormat } from '../../domain/models/CitationFormat'
import { transformDatasetLinkedCollectionsResponseToDatasetLinkedCollection } from './transformers/datasetLinkedCollectionsTransformers'
import { FormattedCitation } from '../../domain/models/FormattedCitation'
import { DatasetTemplate } from '../../domain/models/DatasetTemplate'
import { DatasetTemplatePayload } from './transformers/DatasetTemplatePayload'
import { transformDatasetTemplatePayloadToDatasetTemplate } from './transformers/datasetTemplateTransformers'
import { DatasetType } from '../../domain/models/DatasetType'
import { TermsOfAccess } from '../../domain/models/Dataset'
import { transformTermsOfAccessToUpdatePayload } from './transformers/termsOfAccessTransformers'
Expand Down Expand Up @@ -402,18 +398,6 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi
})
}

public async getDatasetTemplates(
collectionIdOrAlias: number | string
): Promise<DatasetTemplate[]> {
return this.doGet(`/dataverses/${collectionIdOrAlias}/templates`, true)
.then((response: AxiosResponse<{ data: DatasetTemplatePayload[] }>) =>
transformDatasetTemplatePayloadToDatasetTemplate(response.data.data)
)
.catch((error) => {
throw error
})
}

public async getDatasetAvailableDatasetTypes(): Promise<DatasetType[]> {
return this.doGet(this.buildApiEndpoint(this.datasetsResourceName, 'datasetTypes'))
.then((response) => response.data.data)
Expand Down

This file was deleted.

1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ export * from './notifications'
export * from './search'
export * from './licenses'
export * from './externalTools'
export * from './templates'
Loading