Skip to content

Commit 16c83fe

Browse files
authored
Merge pull request #377 from IQSS/revert-367-feat/345-get-collection-for-linking
Revert "Get Collections For Linking Use Case"
2 parents bc48538 + 8cc6b9d commit 16c83fe

File tree

15 files changed

+20
-411
lines changed

15 files changed

+20
-411
lines changed

docs/useCases.md

Lines changed: 0 additions & 64 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 Collections for Linking](#get-collections-for-linking)
2019
- [Collections write use cases](#collections-write-use-cases)
2120
- [Create a Collection](#create-a-collection)
2221
- [Update a Collection](#update-a-collection)
@@ -337,69 +336,6 @@ The `collectionIdOrAlias` is a generic collection identifier, which can be eithe
337336

338337
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.
339338

340-
#### Get Collections for Linking
341-
342-
Returns an array of [CollectionSummary](../src/collections/domain/models/CollectionSummary.ts) (id, alias, displayName) representing the Dataverse collections to which a given Dataverse collection or Dataset may be linked.
343-
344-
This use case supports an optional `searchTerm` to filter by collection name.
345-
346-
##### Example calls:
347-
348-
```typescript
349-
import { getCollectionsForLinking } from '@iqss/dataverse-client-javascript'
350-
351-
/* ... */
352-
353-
// Case 1: For a given Dataverse collection (by numeric id or alias)
354-
const collectionIdOrAlias: number | string = 'collectionAlias' // or 123
355-
const searchTerm = 'searchOn'
356-
357-
getCollectionsForLinking
358-
.execute('collection', collectionIdOrAlias, searchTerm)
359-
.then((collections) => {
360-
// collections: CollectionSummary[]
361-
/* ... */
362-
})
363-
.catch((error: Error) => {
364-
/* ... */
365-
})
366-
367-
/* ... */
368-
369-
// Case 2: For a given Dataset (by persistent identifier)
370-
const persistentId = 'doi:10.5072/FK2/J8SJZB'
371-
372-
getCollectionsForLinking
373-
.execute('dataset', persistentId, searchTerm)
374-
.then((collections) => {
375-
// collections: CollectionSummary[]
376-
/* ... */
377-
})
378-
.catch((error: Error) => {
379-
/* ... */
380-
})
381-
382-
// Case 3: [alreadyLinked] Optional flag. When true, returns collections currently linked (candidates to unlink). Defaults to false.
383-
const alreadyLinked = true
384-
385-
getCollectionsForLinking
386-
.execute('dataset', persistentId, searchTerm, alreadyLinked)
387-
.then((collections) => {
388-
// collections: CollectionSummary[]
389-
/* ... */
390-
})
391-
.catch((error: Error) => {
392-
/* ... */
393-
})
394-
```
395-
396-
_See [use case](../src/collections/domain/useCases/GetCollectionsForLinking.ts) implementation_.
397-
398-
Notes:
399-
400-
- When the first argument is `'collection'`, the second argument can be a numeric collection id or a collection alias.
401-
- When the first argument is `'dataset'`, the second argument must be the dataset persistent identifier string (e.g., `doi:...`).
402-
403339
### Collections Write Use Cases
404340

405341
#### Create a Collection

src/collections/domain/repositories/ICollectionsRepository.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +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 { CollectionSummary } from '../models/CollectionSummary'
14-
import { LinkingObjectType } from '../useCases/GetCollectionsForLinking'
1513

1614
export interface ICollectionsRepository {
1715
getCollection(collectionIdOrAlias: number | string): Promise<Collection>
@@ -62,10 +60,4 @@ export interface ICollectionsRepository {
6260
linkingCollectionIdOrAlias: number | string
6361
): Promise<void>
6462
getCollectionLinks(collectionIdOrAlias: number | string): Promise<CollectionLinks>
65-
getCollectionsForLinking(
66-
objectType: LinkingObjectType,
67-
id: number | string,
68-
searchTerm: string,
69-
alreadyLinked: boolean
70-
): Promise<CollectionSummary[]>
7163
}

src/collections/domain/useCases/GetCollectionsForLinking.ts

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

src/collections/index.ts

Lines changed: 1 addition & 5 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 { GetCollectionsForLinking } from './domain/useCases/GetCollectionsForLinking'
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 getCollectionsForLinking = new GetCollectionsForLinking(collectionsRepository)
3937

4038
export {
4139
getCollection,
@@ -53,8 +51,7 @@ export {
5351
deleteCollectionFeaturedItem,
5452
linkCollection,
5553
unlinkCollection,
56-
getCollectionLinks,
57-
getCollectionsForLinking
54+
getCollectionLinks
5855
}
5956
export { Collection, CollectionInputLevel } from './domain/models/Collection'
6057
export { CollectionFacet } from './domain/models/CollectionFacet'
@@ -65,4 +62,3 @@ export { CollectionItemType } from './domain/models/CollectionItemType'
6562
export { CollectionSearchCriteria } from './domain/models/CollectionSearchCriteria'
6663
export { FeaturedItem } from './domain/models/FeaturedItem'
6764
export { FeaturedItemsDTO } from './domain/dtos/FeaturedItemsDTO'
68-
export { CollectionSummary } from './domain/models/CollectionSummary'

src/collections/infra/repositories/CollectionsRepository.ts

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ import { ApiConstants } from '../../../core/infra/repositories/ApiConstants'
3838
import { PublicationStatus } from '../../../core/domain/models/PublicationStatus'
3939
import { ReadError } from '../../../core/domain/repositories/ReadError'
4040
import { CollectionLinks } from '../../domain/models/CollectionLinks'
41-
import { CollectionSummary } from '../../domain/models/CollectionSummary'
42-
import { LinkingObjectType } from '../../domain/useCases/GetCollectionsForLinking'
4341

4442
export interface NewCollectionRequestPayload {
4543
alias: string
@@ -95,6 +93,7 @@ export enum GetMyDataCollectionItemsQueryParams {
9593

9694
export class CollectionsRepository extends ApiRepository implements ICollectionsRepository {
9795
private readonly collectionsResourceName: string = 'dataverses'
96+
9897
public async getCollection(
9998
collectionIdOrAlias: number | string = ROOT_COLLECTION_ID
10099
): Promise<Collection> {
@@ -486,46 +485,4 @@ export class CollectionsRepository extends ApiRepository implements ICollections
486485
throw error
487486
})
488487
}
489-
490-
public async getCollectionsForLinking(
491-
objectType: LinkingObjectType,
492-
id: number | string,
493-
searchTerm: string,
494-
alreadyLinked: boolean
495-
): Promise<CollectionSummary[]> {
496-
let path: string
497-
const queryParams = new URLSearchParams()
498-
if (objectType === 'collection') {
499-
path = `/${this.collectionsResourceName}/${id}/dataverse/linkingDataverses`
500-
} else {
501-
path = `/${this.collectionsResourceName}/:persistentId/dataset/linkingDataverses`
502-
queryParams.set('persistentId', String(id))
503-
}
504-
505-
if (searchTerm) {
506-
queryParams.set('searchTerm', searchTerm)
507-
}
508-
509-
if (alreadyLinked) {
510-
queryParams.set('alreadyLinking', 'true')
511-
}
512-
513-
return this.doGet(path, true, queryParams)
514-
.then((response) => {
515-
const payload = response.data.data as {
516-
id: number
517-
alias: string
518-
name: string
519-
}[]
520-
521-
return payload.map((item) => ({
522-
id: item.id,
523-
alias: item.alias,
524-
displayName: item.name
525-
}))
526-
})
527-
.catch((error) => {
528-
throw error
529-
})
530-
}
531488
}

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,7 @@ export const transformCollectionLinksResponseToCollectionLinks = (
159159
const responseDataPayload = response.data.data
160160
const linkedCollections = responseDataPayload.linkedDataverses
161161
const collectionsLinkingToThis = responseDataPayload.dataversesLinkingToThis
162-
const linkedDatasets = responseDataPayload.linkedDatasets.map(
163-
(ld: { identifier: string; title: string }) => ({
164-
persistentId: ld.identifier,
165-
title: ld.title
166-
})
167-
)
168-
162+
const linkedDatasets = responseDataPayload.linkedDatasets
169163
return {
170164
linkedCollections,
171165
collectionsLinkingToThis,

src/datasets/domain/repositories/IDatasetsRepository.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ export interface IDatasetsRepository {
6767
): Promise<DatasetDownloadCount>
6868
getDatasetVersionsSummaries(datasetId: number | string): Promise<DatasetVersionSummaryInfo[]>
6969
deleteDatasetDraft(datasetId: number | string): Promise<void>
70-
linkDataset(datasetId: number | string, collectionIdOrAlias: number | string): Promise<void>
71-
unlinkDataset(datasetId: number | string, collectionIdOrAlias: number | string): Promise<void>
70+
linkDataset(datasetId: number, collectionAlias: string): Promise<void>
71+
unlinkDataset(datasetId: number, collectionAlias: string): Promise<void>
7272
getDatasetLinkedCollections(datasetId: number | string): Promise<DatasetLinkedCollection[]>
7373
getDatasetAvailableCategories(datasetId: number | string): Promise<string[]>
7474
getDatasetCitationInOtherFormats(

src/datasets/domain/useCases/LinkDataset.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ export class LinkDataset implements UseCase<void> {
1111
/**
1212
* Creates a link between a Dataset and a Collection.
1313
*
14-
* @param {number | string} [datasetId] - The dataset id (numeric) or persistent identifier string.
15-
* @param {number | string} [collectionIdOrAlias] - The collection identifier (numeric id) or alias.
14+
* @param {number} [datasetId] - The dataset id.
15+
* @param {string} [collectionAlias] - The collection alias.
1616
* @returns {Promise<void>} - This method does not return anything upon successful completion.
1717
*/
18-
async execute(datasetId: number | string, collectionIdOrAlias: number | string): Promise<void> {
19-
return await this.datasetsRepository.linkDataset(datasetId, collectionIdOrAlias)
18+
async execute(datasetId: number, collectionAlias: string): Promise<void> {
19+
return await this.datasetsRepository.linkDataset(datasetId, collectionAlias)
2020
}
2121
}

src/datasets/domain/useCases/UnlinkDataset.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ export class UnlinkDataset implements UseCase<void> {
1111
/**
1212
* Removes a link between a Dataset and a Collection.
1313
*
14-
* @param {number | string} [datasetId] - The dataset id (numeric) or persistent identifier string.
15-
* @param {number | string} [collectionIdOrAlias] - The collection identifier (numeric id) or alias.
14+
* @param {number} [datasetId] - The dataset id.
15+
* @param {string} [collectionAlias] - The collection alias.
1616
* @returns {Promise<void>} - This method does not return anything upon successful completion.
1717
*/
18-
async execute(datasetId: number | string, collectionIdOrAlias: number | string): Promise<void> {
19-
return await this.datasetsRepository.unlinkDataset(datasetId, collectionIdOrAlias)
18+
async execute(datasetId: number, collectionAlias: string): Promise<void> {
19+
return await this.datasetsRepository.unlinkDataset(datasetId, collectionAlias)
2020
}
2121
}

src/datasets/infra/repositories/DatasetsRepository.ts

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -329,32 +329,16 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi
329329
})
330330
}
331331

332-
public async linkDataset(
333-
datasetId: number | string,
334-
collectionIdOrAlias: number | string
335-
): Promise<void> {
336-
const endpoint = this.buildApiEndpoint(
337-
this.datasetsResourceName,
338-
`link/${collectionIdOrAlias}`,
339-
datasetId
340-
)
341-
return this.doPut(endpoint, {})
332+
public async linkDataset(datasetId: number, collectionAlias: string): Promise<void> {
333+
return this.doPut(`/${this.datasetsResourceName}/${datasetId}/link/${collectionAlias}`, {})
342334
.then(() => undefined)
343335
.catch((error) => {
344336
throw error
345337
})
346338
}
347339

348-
public async unlinkDataset(
349-
datasetId: number | string,
350-
collectionIdOrAlias: number | string
351-
): Promise<void> {
352-
const endpoint = this.buildApiEndpoint(
353-
this.datasetsResourceName,
354-
`deleteLink/${collectionIdOrAlias}`,
355-
datasetId
356-
)
357-
return this.doDelete(endpoint)
340+
public async unlinkDataset(datasetId: number, collectionAlias: string): Promise<void> {
341+
return this.doDelete(`/${this.datasetsResourceName}/${datasetId}/deleteLink/${collectionAlias}`)
358342
.then(() => undefined)
359343
.catch((error) => {
360344
throw error

0 commit comments

Comments
 (0)