Skip to content

Commit 0ff4767

Browse files
committed
feat: getDatasetStorageDriver
1 parent 1421988 commit 0ff4767

File tree

5 files changed

+46
-1
lines changed

5 files changed

+46
-1
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export interface StorageDriver {
2+
name: string
3+
type: string
4+
label: string
5+
directUpload: boolean
6+
directDownload: boolean
7+
}

src/datasets/domain/repositories/IDatasetsRepository.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { CitationFormat } from '../models/CitationFormat'
1414
import { FormattedCitation } from '../models/FormattedCitation'
1515
import { DatasetTemplate } from '../models/DatasetTemplate'
1616
import { DatasetType } from '../models/DatasetType'
17+
import { StorageDriver } from '../../../core/domain/models/StorageDriver'
1718

1819
export interface IDatasetsRepository {
1920
getDataset(
@@ -90,4 +91,5 @@ export interface IDatasetsRepository {
9091
licenses: string[]
9192
): Promise<void>
9293
deleteDatasetType(datasetTypeId: number): Promise<void>
94+
getDatasetStorageDriver(datasetId: number | string): Promise<StorageDriver>
9395
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { UseCase } from '../../../core/domain/useCases/UseCase'
2+
import { IDatasetsRepository } from '../repositories/IDatasetsRepository'
3+
import { StorageDriver } from '../../../core/domain/models/StorageDriver'
4+
5+
export class GetDatasetStorageDriver implements UseCase<StorageDriver> {
6+
private readonly datasetsRepository: IDatasetsRepository
7+
8+
constructor(datasetsRepository: IDatasetsRepository) {
9+
this.datasetsRepository = datasetsRepository
10+
}
11+
12+
/**
13+
* Returns the current storage driver used for a dataset.
14+
*
15+
* @param {number | string} [datasetId] - The dataset identifier, which can be a string (for persistent identifiers), or a number (for numeric identifiers).
16+
* @returns {Promise<StorageDriver>}
17+
*/
18+
async execute(datasetId: number | string): Promise<StorageDriver> {
19+
return this.datasetsRepository.getDatasetStorageDriver(datasetId)
20+
}
21+
}

src/datasets/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import { SetAvailableLicensesForDatasetType } from './domain/useCases/SetAvailab
3232
import { DeleteDatasetType } from './domain/useCases/DeleteDatasetType'
3333
import { GetDatasetCitationInOtherFormats } from './domain/useCases/GetDatasetCitationInOtherFormats'
3434
import { GetDatasetTemplates } from './domain/useCases/GetDatasetTemplates'
35+
import { GetDatasetStorageDriver } from './domain/useCases/GetDatasetStorageDriver'
3536

3637
const datasetsRepository = new DatasetsRepository()
3738

@@ -80,6 +81,7 @@ const setAvailableLicensesForDatasetType = new SetAvailableLicensesForDatasetTyp
8081
const deleteDatasetType = new DeleteDatasetType(datasetsRepository)
8182
const getDatasetCitationInOtherFormats = new GetDatasetCitationInOtherFormats(datasetsRepository)
8283
const getDatasetTemplates = new GetDatasetTemplates(datasetsRepository)
84+
const getDatasetStorageDriver = new GetDatasetStorageDriver(datasetsRepository)
8385

8486
export {
8587
getDataset,
@@ -109,7 +111,8 @@ export {
109111
addDatasetType,
110112
linkDatasetTypeWithMetadataBlocks,
111113
setAvailableLicensesForDatasetType,
112-
deleteDatasetType
114+
deleteDatasetType,
115+
getDatasetStorageDriver
113116
}
114117
export { DatasetNotNumberedVersion } from './domain/models/DatasetNotNumberedVersion'
115118
export { DatasetUserPermissions } from './domain/models/DatasetUserPermissions'

src/datasets/infra/repositories/DatasetsRepository.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { DatasetTemplate } from '../../domain/models/DatasetTemplate'
2929
import { DatasetTemplatePayload } from './transformers/DatasetTemplatePayload'
3030
import { transformDatasetTemplatePayloadToDatasetTemplate } from './transformers/datasetTemplateTransformers'
3131
import { DatasetType } from '../../domain/models/DatasetType'
32+
import { StorageDriver } from '../../../core/domain/models/StorageDriver'
3233

3334
export interface GetAllDatasetPreviewsQueryParams {
3435
per_page?: number
@@ -451,4 +452,15 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi
451452
throw error
452453
})
453454
}
455+
456+
public async getDatasetStorageDriver(datasetId: number | string): Promise<StorageDriver> {
457+
return this.doGet(
458+
this.buildApiEndpoint(this.datasetsResourceName, `storageDriver`, datasetId),
459+
true
460+
)
461+
.then((response) => response.data.data)
462+
.catch((error) => {
463+
throw error
464+
})
465+
}
454466
}

0 commit comments

Comments
 (0)