Skip to content

Commit 84c923c

Browse files
committed
feat: add use case
1 parent 26da8e6 commit 84c923c

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
@@ -59,4 +59,6 @@ export interface IFilesRepository {
5959
datasetId: number | string,
6060
uploadedFileDTOs: UploadedFileDTO[]
6161
): Promise<undefined>
62+
63+
deleteFile(fileId: number | string): Promise<undefined>
6264
}
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 DeleteFile implements UseCase<void> {
5+
constructor(private readonly filesRepository: IFilesRepository) {}
6+
7+
/**
8+
* Deletes a file.
9+
* More detailed information about the file deletion behavior can be found in https://guides.dataverse.org/en/latest/api/native-api.html#deleting-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.deleteFile(fileId)
16+
}
17+
}

src/files/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { GetFileAndDataset } from './domain/useCases/GetFileAndDataset'
1111
import { UploadFile } from './domain/useCases/UploadFile'
1212
import { DirectUploadClient } from './infra/clients/DirectUploadClient'
1313
import { AddUploadedFilesToDataset } from './domain/useCases/AddUploadedFilesToDataset'
14+
import { DeleteFile } from './domain/useCases/DeleteFile'
1415

1516
const filesRepository = new FilesRepository()
1617
const directUploadClient = new DirectUploadClient(filesRepository)
@@ -26,6 +27,7 @@ const getFileAndDataset = new GetFileAndDataset(filesRepository)
2627
const getFileCitation = new GetFileCitation(filesRepository)
2728
const uploadFile = new UploadFile(directUploadClient)
2829
const addUploadedFilesToDataset = new AddUploadedFilesToDataset(filesRepository)
30+
const deleteFile = new DeleteFile(filesRepository)
2931

3032
export {
3133
getDatasetFiles,
@@ -38,7 +40,8 @@ export {
3840
getFileAndDataset,
3941
getFileCitation,
4042
uploadFile,
41-
addUploadedFilesToDataset
43+
addUploadedFilesToDataset,
44+
deleteFile
4245
}
4346

4447
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
@@ -293,4 +293,12 @@ export class FilesRepository extends ApiRepository implements IFilesRepository {
293293
queryParams.searchText = fileSearchCriteria.searchText
294294
}
295295
}
296+
297+
public async deleteFile(fileId: number | string): Promise<undefined> {
298+
return this.doDelete(this.buildApiEndpoint(this.filesResourceName, undefined, fileId))
299+
.then(() => undefined)
300+
.catch((error) => {
301+
throw error
302+
})
303+
}
296304
}

0 commit comments

Comments
 (0)