Skip to content

Commit da4a167

Browse files
committed
feat: new delete collection method + docs
1 parent 15cdfa3 commit da4a167

File tree

5 files changed

+53
-1
lines changed

5 files changed

+53
-1
lines changed

docs/useCases.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ The different use cases currently available in the package are classified below,
1919
- [Create a Collection](#create-a-collection)
2020
- [Update a Collection](#update-a-collection)
2121
- [Publish a Collection](#publish-a-collection)
22+
- [Delete a Collection](#delete-a-collection)
2223
- [Update Collection Featured Items](#update-collection-featured-items)
2324
- [Delete Collection Featured Items](#delete-collection-featured-items)
2425
- [Datasets](#Datasets)
@@ -315,6 +316,24 @@ The `collectionIdOrAlias` is a generic collection identifier, which can be eithe
315316

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

319+
### Delete a Collection
320+
321+
```typescript
322+
import { deleteCollection } from '@iqss/dataverse-client-javascript'
323+
324+
/* ... */
325+
326+
const collectionIdOrAlias = 12345
327+
328+
deleteCollection.execute(collectionIdOrAlias)
329+
330+
/* ... */
331+
```
332+
333+
The `collectionIdOrAlias` is a generic collection identifier, which can be either a string (for queries by CollectionAlias), or a number (for queries by CollectionId).
334+
335+
_See [use case](../src/collections/domain/useCases/DeleteCollection.ts)_ definition.
336+
318337
#### Update Collection Featured Items
319338

320339
Updates all featured items, given a collection identifier and a CollectionFeaturedItemsDTO.

src/collections/domain/repositories/ICollectionsRepository.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export interface ICollectionsRepository {
1414
parentCollectionId: number | string
1515
): Promise<number>
1616
publishCollection(collectionIdOrAlias: number | string): Promise<void>
17+
deleteCollection(collectionIdOrAlias: number | string): Promise<void>
1718
getCollectionFacets(collectionIdOrAlias: number | string): Promise<CollectionFacet[]>
1819
getCollectionUserPermissions(
1920
collectionIdOrAlias: number | string
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { UseCase } from '../../../core/domain/useCases/UseCase'
2+
import { ICollectionsRepository } from '../repositories/ICollectionsRepository'
3+
4+
export class DeleteCollection implements UseCase<void> {
5+
private collectionsRepository: ICollectionsRepository
6+
7+
constructor(collectionsRepository: ICollectionsRepository) {
8+
this.collectionsRepository = collectionsRepository
9+
}
10+
11+
/**
12+
* Deletes the Dataverse collection whose database ID or alias is given:
13+
*
14+
* @param {number | string} [collectionIdOrAlias] - A generic collection identifier, which can be either a string (for queries by CollectionAlias), or a number (for queries by CollectionId)
15+
* @returns {Promise<void>} -This method does not return anything upon successful completion.
16+
*/
17+
async execute(collectionIdOrAlias: number | string): Promise<void> {
18+
return await this.collectionsRepository.deleteCollection(collectionIdOrAlias)
19+
}
20+
}

src/collections/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { GetCollectionFeaturedItems } from './domain/useCases/GetCollectionFeatu
99
import { CollectionsRepository } from './infra/repositories/CollectionsRepository'
1010
import { UpdateCollectionFeaturedItems } from './domain/useCases/UpdateCollectionFeaturedItems'
1111
import { DeleteCollectionFeaturedItems } from './domain/useCases/DeleteCollectionFeaturedItems'
12+
import { DeleteCollection } from './domain/useCases/DeleteCollection'
1213

1314
const collectionsRepository = new CollectionsRepository()
1415

@@ -22,6 +23,7 @@ const updateCollection = new UpdateCollection(collectionsRepository)
2223
const getCollectionFeaturedItems = new GetCollectionFeaturedItems(collectionsRepository)
2324
const updateCollectionFeaturedItems = new UpdateCollectionFeaturedItems(collectionsRepository)
2425
const deleteCollectionFeaturedItems = new DeleteCollectionFeaturedItems(collectionsRepository)
26+
const deleteCollection = new DeleteCollection(collectionsRepository)
2527

2628
export {
2729
getCollection,
@@ -33,7 +35,8 @@ export {
3335
updateCollection,
3436
getCollectionFeaturedItems,
3537
updateCollectionFeaturedItems,
36-
deleteCollectionFeaturedItems
38+
deleteCollectionFeaturedItems,
39+
deleteCollection
3740
}
3841
export { Collection, CollectionInputLevel } from './domain/models/Collection'
3942
export { CollectionFacet } from './domain/models/CollectionFacet'

src/collections/infra/repositories/CollectionsRepository.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ export class CollectionsRepository extends ApiRepository implements ICollections
102102
throw error
103103
})
104104
}
105+
105106
public async publishCollection(collectionIdOrAlias: string | number): Promise<void> {
106107
return this.doPost(
107108
`/${this.collectionsResourceName}/${collectionIdOrAlias}/actions/:publish`,
@@ -113,6 +114,14 @@ export class CollectionsRepository extends ApiRepository implements ICollections
113114
})
114115
}
115116

117+
public async deleteCollection(collectionIdOrAlias: number | string): Promise<void> {
118+
return this.doDelete(`/${this.collectionsResourceName}/${collectionIdOrAlias}`)
119+
.then(() => undefined)
120+
.catch((error) => {
121+
throw error
122+
})
123+
}
124+
116125
public async getCollectionUserPermissions(
117126
collectionIdOrAlias: number | string
118127
): Promise<CollectionUserPermissions> {

0 commit comments

Comments
 (0)