Skip to content

Commit 1575036

Browse files
committed
feat: add use case for unassigning role on dataset
1 parent 5a410bc commit 1575036

4 files changed

Lines changed: 43 additions & 1 deletion

File tree

src/datasets/domain/repositories/IDatasetsRepository.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,8 @@ export interface IDatasetsRepository {
107107
roleAssignee: string,
108108
roleAlias: string
109109
): Promise<void>
110+
unassignRoleOnDataset(
111+
datasetId: number | string,
112+
roleAssignmentId: number
113+
): Promise<void>
110114
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { UseCase } from '../../../core/domain/useCases/UseCase'
2+
import { IDatasetsRepository } from '../repositories/IDatasetsRepository'
3+
4+
export class UnassignRoleOnDataset implements UseCase<void> {
5+
private datasetsRepository: IDatasetsRepository
6+
7+
constructor(datasetsRepository: IDatasetsRepository) {
8+
this.datasetsRepository = datasetsRepository
9+
}
10+
11+
/**
12+
* Deletes the given role assignment on the given dataset.
13+
*
14+
* @param {number | string} [datasetId] - The dataset identifier, which can be a string (for persistent identifiers), or a number (for numeric identifiers).
15+
* @param {number} [roleAssignmentId] - To numeric identifier of the role assignment
16+
* @returns {Promise<void>}
17+
*/
18+
async execute(
19+
datasetId: number | string,
20+
roleAssignmentId: number
21+
): Promise<void> {
22+
return await this.datasetsRepository.unassignRoleOnDataset(datasetId, roleAssignmentId)
23+
}
24+
}

src/datasets/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import { UpdateTermsOfAccess } from './domain/useCases/UpdateTermsOfAccess'
3535
import { UpdateDatasetLicense } from './domain/useCases/UpdateDatasetLicense'
3636
import { GetDatasetStorageDriver } from './domain/useCases/GetDatasetStorageDriver'
3737
import { AssignRoleOnDataset } from './domain/useCases/AssignRoleOnDataset'
38+
import { UnassignRoleOnDataset } from './domain/useCases/UnassignRoleOnDataset'
3839

3940
const datasetsRepository = new DatasetsRepository()
4041

@@ -86,6 +87,7 @@ const updateTermsOfAccess = new UpdateTermsOfAccess(datasetsRepository)
8687
const updateDatasetLicense = new UpdateDatasetLicense(datasetsRepository)
8788
const getDatasetStorageDriver = new GetDatasetStorageDriver(datasetsRepository)
8889
const assignRoleOnDataset = new AssignRoleOnDataset(datasetsRepository)
90+
const unassignRoleOnDataset = new AssignRoleOnDataset(datasetsRepository)
8991

9092
export {
9193
getDataset,
@@ -118,7 +120,8 @@ export {
118120
deleteDatasetType,
119121
updateDatasetLicense,
120122
getDatasetStorageDriver,
121-
assignRoleOnDataset
123+
assignRoleOnDataset,
124+
unassignRoleOnDataset
122125
}
123126
export { DatasetNotNumberedVersion } from './domain/models/DatasetNotNumberedVersion'
124127
export { DatasetUserPermissions } from './domain/models/DatasetUserPermissions'

src/datasets/infra/repositories/DatasetsRepository.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,4 +526,15 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi
526526
throw error
527527
})
528528
}
529+
530+
public async unassignRoleOnDataset(
531+
datasetId: number | string,
532+
roleAssignmentId: number
533+
): Promise<void> {
534+
return this.doDelete(this.buildApiEndpoint(this.datasetsResourceName, `assignments/${roleAssignmentId}`, datasetId))
535+
.then(() => undefined)
536+
.catch((error) => {
537+
throw error
538+
})
539+
}
529540
}

0 commit comments

Comments
 (0)