Skip to content

Commit a316ca7

Browse files
committed
feat: add use case for setting default contributor role
1 parent 9c7e9d8 commit a316ca7

4 files changed

Lines changed: 48 additions & 1 deletion

File tree

src/collections/domain/repositories/ICollectionsRepository.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ export interface ICollectionsRepository {
2525
getCollectionUserPermissions(
2626
collectionIdOrAlias: number | string
2727
): Promise<CollectionUserPermissions>
28+
setDefaultContributorRole(
29+
collectionIdOrAlias: number | string,
30+
roleAlias: string
31+
): Promise<void>
2832
getCollectionItems(
2933
collectionId?: string,
3034
limit?: number,
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { UseCase } from '../../../core/domain/useCases/UseCase'
2+
import { ICollectionsRepository } from '../repositories/ICollectionsRepository'
3+
import { ROOT_COLLECTION_ID } from '../models/Collection'
4+
5+
export class SetDefaultContributorRole implements UseCase<void> {
6+
private collectionsRepository: ICollectionsRepository
7+
8+
constructor(collectionsRepository: ICollectionsRepository) {
9+
this.collectionsRepository = collectionsRepository
10+
}
11+
12+
/**
13+
* Sets the default Role that is assigned to contributors in the given collection.
14+
*
15+
* @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)
16+
* If this parameter is not set, the default value is: ':root'
17+
* @param {string} [roleAlias] - The alias of the role to be assigned
18+
* @returns {Promise<void>}
19+
*/
20+
async execute(
21+
collectionIdOrAlias: number | string = ROOT_COLLECTION_ID,
22+
roleAlias: string
23+
): Promise<void> {
24+
return await this.collectionsRepository.setDefaultContributorRole(collectionIdOrAlias, roleAlias)
25+
}
26+
}

src/collections/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ 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 { SetDefaultContributorRole } from './domain/useCases/SetDefaultContributorRole'
1920

2021
const collectionsRepository = new CollectionsRepository()
2122

@@ -36,6 +37,7 @@ const linkCollection = new LinkCollection(collectionsRepository)
3637
const unlinkCollection = new UnlinkCollection(collectionsRepository)
3738
const getCollectionLinks = new GetCollectionLinks(collectionsRepository)
3839
const getCollectionsForLinking = new GetCollectionsForLinking(collectionsRepository)
40+
const setDefaultContributorRole = new SetDefaultContributorRole(collectionsRepository)
3941

4042
export {
4143
getCollection,
@@ -54,7 +56,8 @@ export {
5456
linkCollection,
5557
unlinkCollection,
5658
getCollectionLinks,
57-
getCollectionsForLinking
59+
getCollectionsForLinking,
60+
setDefaultContributorRole
5861
}
5962
export { Collection, CollectionInputLevel } from './domain/models/Collection'
6063
export { CollectionFacet } from './domain/models/CollectionFacet'

src/collections/infra/repositories/CollectionsRepository.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,20 @@ export class CollectionsRepository extends ApiRepository implements ICollections
167167
})
168168
}
169169

170+
public async setDefaultContributorRole(
171+
collectionIdOrAlias: number | string,
172+
roleAlias: string
173+
): Promise<void> {
174+
return this.doPut(
175+
`/${this.collectionsResourceName}/${collectionIdOrAlias}/defaultContributorRole/${roleAlias}`,
176+
{}
177+
)
178+
.then(() => undefined)
179+
.catch((error) => {
180+
throw error
181+
})
182+
}
183+
170184
public async getCollectionItems(
171185
collectionId?: string,
172186
limit?: number,

0 commit comments

Comments
 (0)