Skip to content

Commit aa8d7b2

Browse files
committed
feat: add use case
1 parent 022c5ec commit aa8d7b2

File tree

4 files changed

+31
-1
lines changed

4 files changed

+31
-1
lines changed

src/files/domain/repositories/IFilesRepository.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,6 @@ export interface IFilesRepository {
6161
): Promise<undefined>
6262

6363
deleteFile(fileId: number | string): Promise<undefined>
64+
65+
restrictFile(fileId: number | string): Promise<undefined>
6466
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { IFilesRepository } from '../repositories/IFilesRepository'
2+
import { UseCase } from '../../../core/domain/useCases/UseCase'
3+
4+
export class RestrictFile implements UseCase<void> {
5+
constructor(private readonly filesRepository: IFilesRepository) {}
6+
7+
/**
8+
* Restrict or unrestrict an existing file.
9+
* More detailed information about the file restriction behavior can be found in https://guides.dataverse.org/en/latest/api/native-api.html#restrict-files
10+
*
11+
* @param {number | string} [fileId] - The File identifier, which can be a string (for persistent identifiers), or a number (for numeric identifiers).
12+
* @returns {Promise<void>} -This method does not return anything upon successful completion.
13+
*/
14+
async execute(fileId: number | string): Promise<void> {
15+
return await this.filesRepository.restrictFile(fileId)
16+
}
17+
}

src/files/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { UploadFile } from './domain/useCases/UploadFile'
1212
import { DirectUploadClient } from './infra/clients/DirectUploadClient'
1313
import { AddUploadedFilesToDataset } from './domain/useCases/AddUploadedFilesToDataset'
1414
import { DeleteFile } from './domain/useCases/DeleteFile'
15+
import { RestrictFile } from './domain/useCases/RestrictFile'
1516

1617
const filesRepository = new FilesRepository()
1718
const directUploadClient = new DirectUploadClient(filesRepository)
@@ -28,6 +29,7 @@ const getFileCitation = new GetFileCitation(filesRepository)
2829
const uploadFile = new UploadFile(directUploadClient)
2930
const addUploadedFilesToDataset = new AddUploadedFilesToDataset(filesRepository)
3031
const deleteFile = new DeleteFile(filesRepository)
32+
const restrictFile = new RestrictFile(filesRepository)
3133

3234
export {
3335
getDatasetFiles,
@@ -41,7 +43,8 @@ export {
4143
getFileCitation,
4244
uploadFile,
4345
addUploadedFilesToDataset,
44-
deleteFile
46+
deleteFile,
47+
restrictFile
4548
}
4649

4750
export { FileModel as File, FileEmbargo, FileChecksum } from './domain/models/FileModel'

src/files/infra/repositories/FilesRepository.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,4 +301,12 @@ export class FilesRepository extends ApiRepository implements IFilesRepository {
301301
throw error
302302
})
303303
}
304+
305+
public async restrictFile(fileId: number | string): Promise<undefined> {
306+
return this.doPut(this.buildApiEndpoint(this.filesResourceName, 'restrict', fileId), {})
307+
.then(() => undefined)
308+
.catch((error) => {
309+
throw error
310+
})
311+
}
304312
}

0 commit comments

Comments
 (0)