Skip to content

Commit 7da8da7

Browse files
committed
feat: repositories methods
1 parent 461b9ff commit 7da8da7

4 files changed

Lines changed: 37 additions & 1 deletion

File tree

src/files/domain/dtos/UploadedFileDTO.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ export interface UploadedFileDTO {
88
checksumValue: string
99
checksumType: string
1010
mimeType: string
11+
forceReplace?: boolean // Only used in the ReplaceFile use case, whether to allow the mimetype to change
1112
}

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+
replaceFile(fileId: number, uploadedFileDTO: UploadedFileDTO): Promise<undefined>
6466
}

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 { ReplaceFile } from './domain/useCases/ReplaceFile'
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 replaceFile = new ReplaceFile(filesRepository)
3133

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

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

src/files/infra/repositories/FilesRepository.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,4 +301,34 @@ export class FilesRepository extends ApiRepository implements IFilesRepository {
301301
throw error
302302
})
303303
}
304+
305+
public async replaceFile(fileId: number, uploadedFileDTO: UploadedFileDTO): Promise<undefined> {
306+
const requestBody: UploadedFileRequestBody = {
307+
fileName: uploadedFileDTO.fileName,
308+
checksum: {
309+
'@value': uploadedFileDTO.checksumValue,
310+
'@type': uploadedFileDTO.checksumType.toUpperCase()
311+
},
312+
mimeType: uploadedFileDTO.mimeType,
313+
storageIdentifier: uploadedFileDTO.storageId,
314+
...(uploadedFileDTO.description && { description: uploadedFileDTO.description }),
315+
...(uploadedFileDTO.categories && { categories: uploadedFileDTO.categories }),
316+
...(uploadedFileDTO.restrict && { restrict: uploadedFileDTO.restrict }),
317+
...(uploadedFileDTO.directoryLabel && { directoryLabel: uploadedFileDTO.directoryLabel })
318+
}
319+
320+
const formData = new FormData()
321+
formData.append('jsonData', JSON.stringify(requestBody))
322+
323+
return this.doPost(
324+
this.buildApiEndpoint(this.filesResourceName, 'replace', fileId),
325+
requestBody,
326+
{},
327+
ApiConstants.CONTENT_TYPE_MULTIPART_FORM_DATA
328+
)
329+
.then(() => undefined)
330+
.catch((error) => {
331+
throw error
332+
})
333+
}
304334
}

0 commit comments

Comments
 (0)