Skip to content

Commit 6c9fb0e

Browse files
committed
refactor: move use case to datasets repository
1 parent aa34265 commit 6c9fb0e

File tree

12 files changed

+81
-85
lines changed

12 files changed

+81
-85
lines changed

docs/useCases.md

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ The different use cases currently available in the package are classified below,
1616
- [List All Collection Items](#list-all-collection-items)
1717
- [List My Data Collection Items](#list-my-data-collection-items)
1818
- [Get Collection Featured Items](#get-collection-featured-items)
19-
- [Get Collection Dataset Templates](#get-collection-dataset-templates)
2019
- [Collections write use cases](#collections-write-use-cases)
2120
- [Create a Collection](#create-a-collection)
2221
- [Update a Collection](#update-a-collection)
@@ -39,6 +38,7 @@ The different use cases currently available in the package are classified below,
3938
- [Get Dataset Versions Summaries](#get-dataset-versions-summaries)
4039
- [Get Dataset Linked Collections](#get-dataset-linked-collections)
4140
- [Get Dataset Available Categories](#get-dataset-available-categories)
41+
- [Get Dataset Templates](#get-dataset-templates)
4242
- [Datasets write use cases](#datasets-write-use-cases)
4343
- [Create a Dataset](#create-a-dataset)
4444
- [Update a Dataset](#update-a-dataset)
@@ -322,26 +322,6 @@ The `collectionIdOrAlias` is a generic collection identifier, which can be eithe
322322

323323
If no collection identifier is specified, the default collection identifier; `:root` will be used. If you want to search for a different collection, you must add the collection identifier as a parameter in the use case call.
324324

325-
#### Get Collection Dataset Templates
326-
327-
Returns a [CollectionDatasetTemplate](../src/collections/domain/models/CollectionDatasetTemplate.ts) array containing the dataset templates of the requested collection, given the collection identifier or alias.
328-
329-
##### Example call:
330-
331-
```typescript
332-
import { getCollectionDatasetTemplates } from '@iqss/dataverse-client-javascript'
333-
334-
const collectionIdOrAlias = 12345
335-
336-
getCollectionDatasetTemplates
337-
.execute(collectionIdOrAlias)
338-
.then((datasetTemplates: CollectionDatasetTemplate[]) => {
339-
/* ... */
340-
})
341-
```
342-
343-
_See [use case](../src/collections/domain/useCases/GetCollectionDatasetTemplates.ts)_ definition.
344-
345325
### Collections Write Use Cases
346326

347327
#### Create a Collection
@@ -1131,6 +1111,24 @@ _See [use case](../src/datasets/domain/useCases/GetDatasetAvailableCategories.ts
11311111

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

1114+
#### Get Dataset Templates
1115+
1116+
Returns a [DatasetTemplate](../src/datasets/domain/models/DatasetTemplate.ts) array containing the dataset templates of the requested collection, given the collection identifier or alias.
1117+
1118+
##### Example call:
1119+
1120+
```typescript
1121+
import { getDatasetTemplates } from '@iqss/dataverse-client-javascript'
1122+
1123+
const collectionIdOrAlias = 12345
1124+
1125+
getDatasetTemplates.execute(collectionIdOrAlias).then((datasetTemplates: DatasetTemplate[]) => {
1126+
/* ... */
1127+
})
1128+
```
1129+
1130+
_See [use case](../src/datasets/domain/useCases/GetDatasetTemplates.ts)_ definition.
1131+
11341132
## Files
11351133

11361134
### Files read use cases

src/collections/domain/repositories/ICollectionsRepository.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { CollectionUserPermissions } from '../models/CollectionUserPermissions'
1010
import { PublicationStatus } from '../../../core/domain/models/PublicationStatus'
1111
import { CollectionItemType } from '../../../collections/domain/models/CollectionItemType'
1212
import { CollectionLinks } from '../models/CollectionLinks'
13-
import { CollectionDatasetTemplate } from '../models/CollectionDatasetTemplate'
1413

1514
export interface ICollectionsRepository {
1615
getCollection(collectionIdOrAlias: number | string): Promise<Collection>
@@ -61,7 +60,4 @@ export interface ICollectionsRepository {
6160
linkingCollectionIdOrAlias: number | string
6261
): Promise<void>
6362
getCollectionLinks(collectionIdOrAlias: number | string): Promise<CollectionLinks>
64-
getCollectionDatasetTemplates(
65-
collectionIdOrAlias: number | string
66-
): Promise<CollectionDatasetTemplate[]>
6763
}

src/collections/domain/useCases/GetCollectionDatasetTemplates.ts

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

src/collections/index.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import { DeleteCollectionFeaturedItem } from './domain/useCases/DeleteCollection
1515
import { LinkCollection } from './domain/useCases/LinkCollection'
1616
import { UnlinkCollection } from './domain/useCases/UnlinkCollection'
1717
import { GetCollectionLinks } from './domain/useCases/GetCollectionLinks'
18-
import { GetCollectionDatasetTemplates } from './domain/useCases/GetCollectionDatasetTemplates'
1918

2019
const collectionsRepository = new CollectionsRepository()
2120

@@ -35,7 +34,6 @@ const deleteCollectionFeaturedItem = new DeleteCollectionFeaturedItem(collection
3534
const linkCollection = new LinkCollection(collectionsRepository)
3635
const unlinkCollection = new UnlinkCollection(collectionsRepository)
3736
const getCollectionLinks = new GetCollectionLinks(collectionsRepository)
38-
const getCollectionDatasetTemplates = new GetCollectionDatasetTemplates(collectionsRepository)
3937

4038
export {
4139
getCollection,
@@ -53,8 +51,7 @@ export {
5351
deleteCollectionFeaturedItem,
5452
linkCollection,
5553
unlinkCollection,
56-
getCollectionLinks,
57-
getCollectionDatasetTemplates
54+
getCollectionLinks
5855
}
5956
export { Collection, CollectionInputLevel } from './domain/models/Collection'
6057
export { CollectionFacet } from './domain/models/CollectionFacet'

src/collections/infra/repositories/CollectionsRepository.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 { ICollectionsRepository } from '../../domain/repositories/ICollectionsRepository'
43
import {
@@ -39,9 +38,6 @@ import { ApiConstants } from '../../../core/infra/repositories/ApiConstants'
3938
import { PublicationStatus } from '../../../core/domain/models/PublicationStatus'
4039
import { ReadError } from '../../../core/domain/repositories/ReadError'
4140
import { CollectionLinks } from '../../domain/models/CollectionLinks'
42-
import { CollectionDatasetTemplatePayload } from './transformers/CollectionDatasetTemplatePayload'
43-
import { transformCollectionDatasetTemplatePayloadToCollectionDatasetTemplate } from './transformers/collectionDatasetTemplateTransformer'
44-
import { CollectionDatasetTemplate } from '../../domain/models/CollectionDatasetTemplate'
4541

4642
export interface NewCollectionRequestPayload {
4743
alias: string
@@ -492,16 +488,4 @@ export class CollectionsRepository extends ApiRepository implements ICollections
492488
throw error
493489
})
494490
}
495-
496-
public async getCollectionDatasetTemplates(
497-
collectionIdOrAlias: number | string
498-
): Promise<CollectionDatasetTemplate[]> {
499-
return this.doGet(`/${this.collectionsResourceName}/${collectionIdOrAlias}/templates`, true)
500-
.then((response: AxiosResponse<{ data: CollectionDatasetTemplatePayload[] }>) =>
501-
transformCollectionDatasetTemplatePayloadToCollectionDatasetTemplate(response.data.data)
502-
)
503-
.catch((error) => {
504-
throw error
505-
})
506-
}
507491
}

src/collections/domain/models/CollectionDatasetTemplate.ts renamed to src/datasets/domain/models/DatasetTemplate.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { DatasetLicense, DatasetMetadataFieldValue, TermsOfUse } from '../../../datasets'
1+
import { DatasetLicense, DatasetMetadataFieldValue, TermsOfUse } from './Dataset'
22

3-
export interface CollectionDatasetTemplate {
3+
export interface DatasetTemplate {
44
id: number
55
name: string
66
alias: string

src/datasets/domain/repositories/IDatasetsRepository.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { DatasetVersionSummaryInfo } 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'
1516

1617
export interface IDatasetsRepository {
1718
getDataset(
@@ -74,4 +75,5 @@ export interface IDatasetsRepository {
7475
format: CitationFormat,
7576
includeDeaccessioned?: boolean
7677
): Promise<FormattedCitation>
78+
getDatasetTemplates(collectionIdOrAlias: number | string): Promise<DatasetTemplate[]>
7779
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { ROOT_COLLECTION_ID } from '../../../collections/domain/models/Collection'
2+
import { UseCase } from '../../../core/domain/useCases/UseCase'
3+
import { DatasetTemplate } from '../models/DatasetTemplate'
4+
import { IDatasetsRepository } from '../repositories/IDatasetsRepository'
5+
6+
export class GetDatasetTemplates implements UseCase<DatasetTemplate[]> {
7+
private datasetsRepository: IDatasetsRepository
8+
9+
constructor(datasetsRepository: IDatasetsRepository) {
10+
this.datasetsRepository = datasetsRepository
11+
}
12+
13+
/**
14+
* Returns a DatasetTemplate array containing the dataset templates of the requested collection, given the collection identifier or alias.
15+
*
16+
* @param {number | string} [collectionIdOrAlias = ':root'] - A generic collection identifier, which can be either a string (for queries by CollectionAlias), or a number (for queries by CollectionId)
17+
* If this parameter is not set, the default value is: ':root'
18+
* @returns {Promise<DatasetTemplate[]>}
19+
*/
20+
async execute(
21+
collectionIdOrAlias: number | string = ROOT_COLLECTION_ID
22+
): Promise<DatasetTemplate[]> {
23+
return await this.datasetsRepository.getDatasetTemplates(collectionIdOrAlias)
24+
}
25+
}

src/datasets/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { UnlinkDataset } from './domain/useCases/UnlinkDataset'
2525
import { GetDatasetLinkedCollections } from './domain/useCases/GetDatasetLinkedCollections'
2626
import { GetDatasetAvailableCategories } from './domain/useCases/GetDatasetAvailableCategories'
2727
import { GetDatasetCitationInOtherFormats } from './domain/useCases/GetDatasetCitationInOtherFormats'
28+
import { GetDatasetTemplates } from './domain/useCases/GetDatasetTemplates'
2829

2930
const datasetsRepository = new DatasetsRepository()
3031

@@ -64,6 +65,7 @@ const unlinkDataset = new UnlinkDataset(datasetsRepository)
6465
const getDatasetLinkedCollections = new GetDatasetLinkedCollections(datasetsRepository)
6566
const getDatasetAvailableCategories = new GetDatasetAvailableCategories(datasetsRepository)
6667
const getDatasetCitationInOtherFormats = new GetDatasetCitationInOtherFormats(datasetsRepository)
68+
const getDatasetTemplates = new GetDatasetTemplates(datasetsRepository)
6769

6870
export {
6971
getDataset,
@@ -86,7 +88,8 @@ export {
8688
unlinkDataset,
8789
getDatasetLinkedCollections,
8890
getDatasetAvailableCategories,
89-
getDatasetCitationInOtherFormats
91+
getDatasetCitationInOtherFormats,
92+
getDatasetTemplates
9093
}
9194
export { DatasetNotNumberedVersion } from './domain/models/DatasetNotNumberedVersion'
9295
export { DatasetUserPermissions } from './domain/models/DatasetUserPermissions'

src/datasets/infra/repositories/DatasetsRepository.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { AxiosResponse } from 'axios'
12
import { ApiRepository } from '../../../core/infra/repositories/ApiRepository'
23
import { IDatasetsRepository } from '../../domain/repositories/IDatasetsRepository'
34
import { Dataset, VersionUpdateType } from '../../domain/models/Dataset'
@@ -24,6 +25,9 @@ import { DatasetLinkedCollection } from '../../domain/models/DatasetLinkedCollec
2425
import { CitationFormat } from '../../domain/models/CitationFormat'
2526
import { transformDatasetLinkedCollectionsResponseToDatasetLinkedCollection } from './transformers/datasetLinkedCollectionsTransformers'
2627
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'
2731

2832
export interface GetAllDatasetPreviewsQueryParams {
2933
per_page?: number
@@ -357,4 +361,16 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi
357361
throw error
358362
})
359363
}
364+
365+
public async getDatasetTemplates(
366+
collectionIdOrAlias: number | string
367+
): Promise<DatasetTemplate[]> {
368+
return this.doGet(`/dataverses/${collectionIdOrAlias}/templates`, true)
369+
.then((response: AxiosResponse<{ data: DatasetTemplatePayload[] }>) =>
370+
transformDatasetTemplatePayloadToDatasetTemplate(response.data.data)
371+
)
372+
.catch((error) => {
373+
throw error
374+
})
375+
}
360376
}

0 commit comments

Comments
 (0)