Skip to content

Commit 421af81

Browse files
authored
Merge pull request #395 from IQSS/394-add-pagination-query-parameters-to-datasetfile-version-summaries-use-case
Add pagination query parameters to Dataset&File Version Summaries use case
2 parents 3407247 + 061ad8e commit 421af81

File tree

19 files changed

+389
-110
lines changed

19 files changed

+389
-110
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ This changelog follows the principles of [Keep a Changelog](https://keepachangel
1313

1414
### Changed
1515

16+
- Add pagination query parameters to Dataset Version Summeries and File Version Summaries use cases
17+
1618
### Fixed
1719

1820
### Removed

docs/useCases.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -872,7 +872,7 @@ The `DatasetPreviewSubset`returned instance contains a property called `totalDat
872872

873873
#### Get Dataset Versions Summaries
874874

875-
Returns an array of [DatasetVersionSummaryInfo](../src/datasets/domain/models/DatasetVersionSummaryInfo.ts) that contains information about what changed in every specific version.
875+
Returns the total count of versions and an array of [DatasetVersionSummaryInfo](../src/datasets/domain/models/DatasetVersionSummaryInfo.ts) that contains information about what changed in every specific version.
876876

877877
##### Example call:
878878

@@ -885,7 +885,7 @@ const datasetId = 'doi:10.77777/FK2/AAAAAA'
885885

886886
getDatasetVersionsSummaries
887887
.execute(datasetId)
888-
.then((datasetVersionsSummaries: DatasetVersionSummaryInfo[]) => {
888+
.then((datasetVersionsSummaries: DatasetVersionSummarySubset) => {
889889
/* ... */
890890
})
891891

@@ -894,7 +894,9 @@ getDatasetVersionsSummaries
894894

895895
_See [use case](../src/datasets/domain/useCases/GetDatasetVersionsSummaries.ts) implementation_.
896896

897-
The `datasetId` parameter can be a string, for persistent identifiers, or a number, for numeric identifiers.
897+
- The `datasetId` parameter can be a string, for persistent identifiers, or a number, for numeric identifiers.
898+
- **limit**: (number) Limit for pagination.
899+
- **offset**: (number) Offset for pagination.
898900

899901
#### Get Dataset Linked Collections
900902

@@ -2000,7 +2002,7 @@ The `fileId` parameter can be a string, for persistent identifiers, or a number,
20002002

20012003
#### Get File Version Summaries
20022004

2003-
Get the file versions summaries, return a list of summaries for each version
2005+
Get the file versions summaries, return a total count of versions and a list of summaries for each version
20042006

20052007
##### Example call:
20062008

@@ -2011,7 +2013,7 @@ import { getFileVersionSummaries } from '@iqss/dataverse-client-javascript'
20112013

20122014
const fileId = 1
20132015

2014-
getFileVersionSummaries.execute(fileId).then((fileVersionSummaries: fileVersionSummaryInfo[]) => {
2016+
getFileVersionSummaries.execute(fileId).then((fileVersionSummaries: fileVersionSummarySubset) => {
20152017
/* ... */
20162018
})
20172019

@@ -2020,6 +2022,9 @@ getFileVersionSummaries.execute(fileId).then((fileVersionSummaries: fileVersionS
20202022

20212023
_See [use case](../src/files/domain/useCases/GetFileVersionSummaries.ts) implementation_.
20222024

2025+
- **limit**: (number) Limit for pagination.
2026+
- **offset**: (number) Offset for pagination.
2027+
20232028
## Metadata Blocks
20242029

20252030
### Metadata Blocks read use cases

src/datasets/domain/models/DatasetVersionSummaryInfo.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ export interface DatasetVersionSummaryInfo {
66
publishedOn?: string
77
}
88

9+
export interface DatasetVersionSummarySubset {
10+
summaries: DatasetVersionSummaryInfo[]
11+
totalCount: number
12+
}
13+
914
export type DatasetVersionSummary = {
1015
[key: string]:
1116
| SummaryUpdates

src/datasets/domain/repositories/IDatasetsRepository.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { DatasetDeaccessionDTO } from '../dtos/DatasetDeaccessionDTO'
88
import { MetadataBlock } from '../../../metadataBlocks'
99
import { DatasetVersionDiff } from '../models/DatasetVersionDiff'
1010
import { DatasetDownloadCount } from '../models/DatasetDownloadCount'
11-
import { DatasetVersionSummaryInfo } from '../models/DatasetVersionSummaryInfo'
11+
import { DatasetVersionSummarySubset } from '../models/DatasetVersionSummaryInfo'
1212
import { DatasetLinkedCollection } from '../models/DatasetLinkedCollection'
1313
import { CitationFormat } from '../models/CitationFormat'
1414
import { FormattedCitation } from '../models/FormattedCitation'
@@ -66,7 +66,11 @@ export interface IDatasetsRepository {
6666
datasetId: number | string,
6767
includeMDC?: boolean
6868
): Promise<DatasetDownloadCount>
69-
getDatasetVersionsSummaries(datasetId: number | string): Promise<DatasetVersionSummaryInfo[]>
69+
getDatasetVersionsSummaries(
70+
datasetId: number | string,
71+
limit?: number,
72+
offset?: number
73+
): Promise<DatasetVersionSummarySubset>
7074
deleteDatasetDraft(datasetId: number | string): Promise<void>
7175
linkDataset(datasetId: number | string, collectionIdOrAlias: number | string): Promise<void>
7276
unlinkDataset(datasetId: number | string, collectionIdOrAlias: number | string): Promise<void>
Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { UseCase } from '../../../core/domain/useCases/UseCase'
2-
import { DatasetVersionSummaryInfo } from '../models/DatasetVersionSummaryInfo'
2+
import { DatasetVersionSummarySubset } from '../models/DatasetVersionSummaryInfo'
33
import { IDatasetsRepository } from '../repositories/IDatasetsRepository'
44

5-
export class GetDatasetVersionsSummaries implements UseCase<DatasetVersionSummaryInfo[]> {
5+
export class GetDatasetVersionsSummaries implements UseCase<DatasetVersionSummarySubset> {
66
private datasetsRepository: IDatasetsRepository
77

88
constructor(datasetsRepository: IDatasetsRepository) {
@@ -14,9 +14,15 @@ export class GetDatasetVersionsSummaries implements UseCase<DatasetVersionSummar
1414
* Draft versions will only be available to users who have permission to view unpublished drafts.
1515
*
1616
* @param {number | string} [datasetId] - The dataset identifier, which can be a string (for persistent identifiers), or a number (for numeric identifiers).
17-
* @returns {Promise<DatasetVersionSummaryInfo[]>} - An array of DatasetVersionSummaryInfo.
17+
* @param {number} [limit] - Limit for pagination (optional).
18+
* @param {number} [offset] - Offset for pagination (optional).
19+
* @returns {Promise<DatasetVersionSummarySubset>} - A DatasetVersionSummarySubset containing the summaries and total count.
1820
*/
19-
async execute(datasetId: number | string): Promise<DatasetVersionSummaryInfo[]> {
20-
return await this.datasetsRepository.getDatasetVersionsSummaries(datasetId)
21+
async execute(
22+
datasetId: number | string,
23+
limit?: number,
24+
offset?: number
25+
): Promise<DatasetVersionSummarySubset> {
26+
return await this.datasetsRepository.getDatasetVersionsSummaries(datasetId, limit, offset)
2127
}
2228
}

src/datasets/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ export { CreatedDatasetIdentifiers } from './domain/models/CreatedDatasetIdentif
141141
export { VersionUpdateType } from './domain/models/Dataset'
142142
export {
143143
DatasetVersionSummaryInfo,
144-
DatasetVersionSummaryStringValues
144+
DatasetVersionSummaryStringValues,
145+
DatasetVersionSummarySubset
145146
} from './domain/models/DatasetVersionSummaryInfo'
146147
export { DatasetLinkedCollection } from './domain/models/DatasetLinkedCollection'
147148
export { DatasetType } from './domain/models/DatasetType'

src/datasets/infra/repositories/DatasetsRepository.ts

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { transformDatasetPreviewsResponseToDatasetPreviewSubset } from './transf
2020
import { DatasetVersionDiff } from '../../domain/models/DatasetVersionDiff'
2121
import { transformDatasetVersionDiffResponseToDatasetVersionDiff } from './transformers/datasetVersionDiffTransformers'
2222
import { DatasetDownloadCount } from '../../domain/models/DatasetDownloadCount'
23-
import { DatasetVersionSummaryInfo } from '../../domain/models/DatasetVersionSummaryInfo'
23+
import { DatasetVersionSummarySubset } from '../../domain/models/DatasetVersionSummaryInfo'
2424
import { DatasetLinkedCollection } from '../../domain/models/DatasetLinkedCollection'
2525
import { CitationFormat } from '../../domain/models/CitationFormat'
2626
import { transformDatasetLinkedCollectionsResponseToDatasetLinkedCollection } from './transformers/datasetLinkedCollectionsTransformers'
@@ -306,13 +306,29 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi
306306
}
307307

308308
public async getDatasetVersionsSummaries(
309-
datasetId: string | number
310-
): Promise<DatasetVersionSummaryInfo[]> {
309+
datasetId: string | number,
310+
limit?: number,
311+
offset?: number
312+
): Promise<DatasetVersionSummarySubset> {
313+
const queryParams = new URLSearchParams()
314+
315+
if (limit) {
316+
queryParams.set('limit', limit.toString())
317+
}
318+
319+
if (offset) {
320+
queryParams.set('offset', offset.toString())
321+
}
322+
311323
return this.doGet(
312324
this.buildApiEndpoint(this.datasetsResourceName, 'versions/compareSummary', datasetId),
313-
true
325+
true,
326+
queryParams
314327
)
315-
.then((response) => response.data.data)
328+
.then((response) => ({
329+
summaries: response.data.data,
330+
totalCount: response.data.totalCount
331+
}))
316332
.catch((error) => {
317333
throw error
318334
})

src/files/domain/models/FileVersionSummaryInfo.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ export interface FileVersionSummaryInfo {
1111
versionNote?: string
1212
}
1313

14+
export interface FileVersionSummarySubset {
15+
summaries: FileVersionSummaryInfo[]
16+
totalCount: number
17+
}
18+
1419
export type FileDifferenceSummary = {
1520
file?: FileChangeType
1621
fileAccess?: 'Restricted' | 'Unrestricted'

src/files/domain/repositories/IFilesRepository.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { FileUploadDestination } from '../models/FileUploadDestination'
1010
import { UploadedFileDTO } from '../dtos/UploadedFileDTO'
1111
import { UpdateFileMetadataDTO } from '../dtos/UpdateFileMetadataDTO'
1212
import { RestrictFileDTO } from '../dtos/RestrictFileDTO'
13-
import { FileVersionSummaryInfo } from '../models/FileVersionSummaryInfo'
13+
import { FileVersionSummarySubset } from '../models/FileVersionSummaryInfo'
1414

1515
export interface IFilesRepository {
1616
getDatasetFiles(
@@ -88,7 +88,11 @@ export interface IFilesRepository {
8888
replace?: boolean
8989
): Promise<void>
9090

91-
getFileVersionSummaries(fileId: number | string): Promise<FileVersionSummaryInfo[]>
91+
getFileVersionSummaries(
92+
fileId: number | string,
93+
limit?: number,
94+
offset?: number
95+
): Promise<FileVersionSummarySubset>
9296

9397
isFileDeleted(fileId: number | string): Promise<boolean>
9498
}
Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { UseCase } from '../../../core/domain/useCases/UseCase'
2-
import { FileVersionSummaryInfo } from '../models/FileVersionSummaryInfo'
2+
import { FileVersionSummarySubset } from '../models/FileVersionSummaryInfo'
33
import { IFilesRepository } from '../repositories/IFilesRepository'
44

5-
export class GetFileVersionSummaries implements UseCase<FileVersionSummaryInfo[]> {
5+
export class GetFileVersionSummaries implements UseCase<FileVersionSummarySubset> {
66
private filesRepository: IFilesRepository
77

88
constructor(filesRepository: IFilesRepository) {
@@ -13,9 +13,15 @@ export class GetFileVersionSummaries implements UseCase<FileVersionSummaryInfo[]
1313
* Returns a list of versions for a given file including a summary of differences between consecutive versions
1414
*
1515
* @param {number | string} [fileId] - The file identifier, which can be a string (for persistent identifiers), or a number (for numeric identifiers).
16-
* @returns {Promise<FileVersionSummaryInfo[]>} - An array of FileVersionSummaryInfo.
16+
* @param {number} [limit] - Limit for pagination (optional).
17+
* @param {number} [offset] - Offset for pagination (optional).
18+
* @returns {Promise<FileVersionSummarySubset>} - A FileVersionSummarySubset containing the summaries and total count.
1719
*/
18-
async execute(fileId: number | string): Promise<FileVersionSummaryInfo[]> {
19-
return await this.filesRepository.getFileVersionSummaries(fileId)
20+
async execute(
21+
fileId: number | string,
22+
limit?: number,
23+
offset?: number
24+
): Promise<FileVersionSummarySubset> {
25+
return await this.filesRepository.getFileVersionSummaries(fileId, limit, offset)
2026
}
2127
}

0 commit comments

Comments
 (0)