Skip to content

Commit 6ec0b23

Browse files
authored
Merge branch 'develop' into add_metadata_block
2 parents 70e44a4 + dc2cd4e commit 6ec0b23

47 files changed

Lines changed: 1608 additions & 195 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/deploy_alpha.yml

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ jobs:
99
test-unit:
1010
runs-on: ubuntu-latest
1111
steps:
12-
- uses: actions/checkout@v3
13-
- uses: actions/setup-node@v3
12+
- uses: actions/checkout@v4
13+
- uses: actions/setup-node@v4
1414
with:
15-
node-version: 19
15+
node-version: 22
1616

1717
- name: Install npm dependencies
1818
run: npm ci
@@ -23,10 +23,10 @@ jobs:
2323
test-integration:
2424
runs-on: ubuntu-latest
2525
steps:
26-
- uses: actions/checkout@v3
27-
- uses: actions/setup-node@v3
26+
- uses: actions/checkout@v4
27+
- uses: actions/setup-node@v4
2828
with:
29-
node-version: 19
29+
node-version: 22
3030

3131
- name: Install npm dependencies
3232
run: npm ci
@@ -35,12 +35,13 @@ jobs:
3535
run: npm run test:integration
3636

3737
test-functional:
38+
needs: [test-integration]
3839
runs-on: ubuntu-latest
3940
steps:
40-
- uses: actions/checkout@v3
41-
- uses: actions/setup-node@v3
41+
- uses: actions/checkout@v4
42+
- uses: actions/setup-node@v4
4243
with:
43-
node-version: 19
44+
node-version: 22
4445

4546
- name: Install npm dependencies
4647
run: npm ci
@@ -54,10 +55,10 @@ jobs:
5455
permissions:
5556
packages: write
5657
steps:
57-
- uses: actions/checkout@v3
58-
- uses: actions/setup-node@v3
58+
- uses: actions/checkout@v4
59+
- uses: actions/setup-node@v4
5960
with:
60-
node-version: 19
61+
node-version: 22
6162
registry-url: https://npm.pkg.github.com/
6263

6364
- name: Install npm dependencies

.github/workflows/deploy_pr.yml

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ jobs:
66
test-unit:
77
runs-on: ubuntu-latest
88
steps:
9-
- uses: actions/checkout@v3
10-
- uses: actions/setup-node@v3
9+
- uses: actions/checkout@v4
10+
- uses: actions/setup-node@v4
1111
with:
12-
node-version: 19
12+
node-version: 22
1313

1414
- name: Install npm dependencies
1515
run: npm ci
@@ -20,10 +20,10 @@ jobs:
2020
test-integration:
2121
runs-on: ubuntu-latest
2222
steps:
23-
- uses: actions/checkout@v3
24-
- uses: actions/setup-node@v3
23+
- uses: actions/checkout@v4
24+
- uses: actions/setup-node@v4
2525
with:
26-
node-version: 19
26+
node-version: 22
2727

2828
- name: Install npm dependencies
2929
run: npm ci
@@ -32,12 +32,13 @@ jobs:
3232
run: npm run test:integration
3333

3434
test-functional:
35+
needs: [test-integration]
3536
runs-on: ubuntu-latest
3637
steps:
37-
- uses: actions/checkout@v3
38-
- uses: actions/setup-node@v3
38+
- uses: actions/checkout@v4
39+
- uses: actions/setup-node@v4
3940
with:
40-
node-version: 19
41+
node-version: 22
4142

4243
- name: Install npm dependencies
4344
run: npm ci
@@ -52,10 +53,10 @@ jobs:
5253
packages: write
5354
contents: read
5455
steps:
55-
- uses: actions/checkout@v3
56-
- uses: actions/setup-node@v3
56+
- uses: actions/checkout@v4
57+
- uses: actions/setup-node@v4
5758
with:
58-
node-version: 19
59+
node-version: 22
5960
registry-url: https://npm.pkg.github.com/
6061

6162
- name: Install npm dependencies

.github/workflows/lint.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ jobs:
66
lint:
77
runs-on: ubuntu-latest
88
steps:
9-
- uses: actions/checkout@v3
10-
- uses: actions/setup-node@v3
9+
- uses: actions/checkout@v4
10+
- uses: actions/setup-node@v4
1111
with:
12-
node-version: 19
12+
node-version: 22
1313

1414
- name: Install npm dependencies
1515
run: npm ci

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ This changelog follows the principles of [Keep a Changelog](https://keepachangel
2727
- New Use Case: [Create a Template](./docs/useCases.md#create-a-template) under Templates.
2828
- New Use Case: [Get a Template](./docs/useCases.md#get-a-template) under Templates.
2929
- New Use Case: [Delete a Template](./docs/useCases.md#delete-a-template) under Templates.
30+
- New Use Case: [Update Template Metadata](./docs/useCases.md#update-template-metadata) under Templates.
31+
- New Use Case: [Update Template License Terms](./docs/useCases.md#update-template-license-terms) under Templates.
32+
- New Use Case: [Update Template Terms Of Access](./docs/useCases.md#update-template-terms-of-access) under Templates.
3033
- Templates: Added `setTemplateAsDefault` use case and repository method to support Dataverse endpoint `POST /dataverses/{id}/template/default/{templateId}`.
3134
- Templates: Added `unsetTemplateAsDefault` use case and repository method to support Dataverse endpoint `DELETE /dataverses/{id}/template/default`.
3235
- New Use Case: [Update Terms of Access](./docs/useCases.md#update-terms-of-access).

docs/useCases.md

Lines changed: 196 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ The different use cases currently available in the package are classified below,
1111
- [Collections](#Collections)
1212
- [Collections read use cases](#collections-read-use-cases)
1313
- [Get a Collection](#get-a-collection)
14+
- [Get Collection Storage Driver](#get-collection-storage-driver)
15+
- [Get Allowed Collection Storage Drivers](#get-allowed-collection-storage-drivers)
1416
- [Get Collection Facets](#get-collection-facets)
1517
- [Get User Permissions on a Collection](#get-user-permissions-on-a-collection)
1618
- [List All Collection Items](#list-all-collection-items)
@@ -19,6 +21,8 @@ The different use cases currently available in the package are classified below,
1921
- [Get Collections for Linking](#get-collections-for-linking)
2022
- [Collections write use cases](#collections-write-use-cases)
2123
- [Create a Collection](#create-a-collection)
24+
- [Set Collection Storage Driver](#set-collection-storage-driver)
25+
- [Delete Collection Storage Driver](#delete-collection-storage-driver)
2226
- [Update a Collection](#update-a-collection)
2327
- [Publish a Collection](#publish-a-collection)
2428
- [Delete a Collection](#delete-a-collection)
@@ -32,6 +36,9 @@ The different use cases currently available in the package are classified below,
3236
- [Templates write use cases](#templates-write-use-cases)
3337
- [Create a Template](#create-a-template)
3438
- [Delete a Template](#delete-a-template)
39+
- [Update Template Metadata](#update-template-metadata)
40+
- [Update Template License Terms](#update-template-license-terms)
41+
- [Update Template Terms Of Access](#update-template-terms-of-access)
3542
- [Set Template As Default](#set-template-as-default)
3643
- [Unset Template As Default](#unset-template-as-default)
3744
- [Datasets](#Datasets)
@@ -204,6 +211,65 @@ getCollection.execute('myCollection').then((collection: Collection) => {
204211
})
205212
```
206213

214+
#### Get Collection Storage Driver
215+
216+
Returns a [StorageDriver](../src/core/domain/models/StorageDriver.ts) instance describing the collection's assigned storage driver.
217+
218+
##### Example call:
219+
220+
```typescript
221+
import { getCollectionStorageDriver } from '@iqss/dataverse-client-javascript'
222+
223+
/* ... */
224+
225+
const collectionIdOrAlias = 'classicLiterature'
226+
227+
getCollectionStorageDriver.execute(collectionIdOrAlias).then((storageDriver: StorageDriver) => {
228+
/* ... */
229+
})
230+
231+
// Pass true to resolve the effective driver after inheritance/default fallback
232+
getCollectionStorageDriver
233+
.execute(collectionIdOrAlias, true)
234+
.then((storageDriver: StorageDriver) => {
235+
/* ... */
236+
})
237+
238+
/* ... */
239+
```
240+
241+
_See [use case](../src/collections/domain/useCases/GetCollectionStorageDriver.ts) implementation_.
242+
243+
The `collectionIdOrAlias` is a generic collection identifier, which can be either a string (for queries by CollectionAlias), or a number (for queries by CollectionId).
244+
245+
The optional `getEffective` parameter defaults to `false`. Set it to `true` to retrieve the effective storage driver after inheritance/default resolution.
246+
247+
#### Get Allowed Collection Storage Drivers
248+
249+
Returns an [AllowedStorageDrivers](../src/collections/domain/models/AllowedStorageDrivers.ts) object whose keys are driver labels and whose values are storage driver ids.
250+
251+
##### Example call:
252+
253+
```typescript
254+
import { getAllowedCollectionStorageDrivers } from '@iqss/dataverse-client-javascript'
255+
256+
/* ... */
257+
258+
const collectionIdOrAlias = 'classicLiterature'
259+
260+
getAllowedCollectionStorageDrivers
261+
.execute(collectionIdOrAlias)
262+
.then((storageDrivers: AllowedStorageDrivers) => {
263+
/* ... */
264+
})
265+
266+
/* ... */
267+
```
268+
269+
_See [use case](../src/collections/domain/useCases/GetAllowedCollectionStorageDrivers.ts) implementation_.
270+
271+
The `collectionIdOrAlias` is a generic collection identifier, which can be either a string (for queries by CollectionAlias), or a number (for queries by CollectionId).
272+
207273
#### Get Collection Facets
208274

209275
Returns a [CollectionFacet](../src/collections/domain/models/CollectionFacet.ts) array containing the facets of the requested collection, given the collection identifier or alias.
@@ -474,6 +540,57 @@ The above example creates the new collection in the root collection since no col
474540

475541
The use case returns a number, which is the identifier of the created collection.
476542

543+
#### Set Collection Storage Driver
544+
545+
Assigns a storage driver to a collection by driver label and returns the backend success message.
546+
547+
##### Example call:
548+
549+
```typescript
550+
import { setCollectionStorageDriver } from '@iqss/dataverse-client-javascript'
551+
552+
/* ... */
553+
554+
const collectionIdOrAlias = 'classicLiterature'
555+
const driverLabel = 'Local Storage'
556+
557+
setCollectionStorageDriver.execute(collectionIdOrAlias, driverLabel).then((message: string) => {
558+
/* ... */
559+
})
560+
561+
/* ... */
562+
```
563+
564+
_See [use case](../src/collections/domain/useCases/SetCollectionStorageDriver.ts) implementation_.
565+
566+
The `collectionIdOrAlias` is a generic collection identifier, which can be either a string (for queries by CollectionAlias), or a number (for queries by CollectionId).
567+
568+
The `driverLabel` parameter must match the storage driver's label, not its id.
569+
570+
#### Delete Collection Storage Driver
571+
572+
Clears the directly assigned storage driver from a collection so it falls back to inherited/default storage, and returns the backend success message.
573+
574+
##### Example call:
575+
576+
```typescript
577+
import { deleteCollectionStorageDriver } from '@iqss/dataverse-client-javascript'
578+
579+
/* ... */
580+
581+
const collectionIdOrAlias = 'classicLiterature'
582+
583+
deleteCollectionStorageDriver.execute(collectionIdOrAlias).then((message: string) => {
584+
/* ... */
585+
})
586+
587+
/* ... */
588+
```
589+
590+
_See [use case](../src/collections/domain/useCases/DeleteCollectionStorageDriver.ts) implementation_.
591+
592+
The `collectionIdOrAlias` is a generic collection identifier, which can be either a string (for queries by CollectionAlias), or a number (for queries by CollectionId).
593+
477594
#### Update a Collection
478595

479596
Updates an existing collection, given a collection identifier and a [CollectionDTO](../src/collections/domain/dtos/CollectionDTO.ts) including the updated collection data.
@@ -738,6 +855,84 @@ await unsetTemplateAsDefault.execute(collectionIdOrAlias)
738855

739856
_See [use case](../src/templates/domain/useCases/UnsetTemplateAsDefault.ts)_ definition.
740857

858+
#### Update Template Metadata
859+
860+
Updates template metadata fields and instructions for a template id.
861+
862+
##### Example call:
863+
864+
```typescript
865+
import { updateTemplateMetadata } from '@iqss/dataverse-client-javascript'
866+
import { UpdateTemplateMetadataDTO } from '@iqss/dataverse-client-javascript'
867+
868+
const templateId = 12345
869+
const replace = true
870+
871+
const payload: UpdateTemplateMetadataDTO = {
872+
name: 'Dataverse template updated',
873+
fields: [
874+
{
875+
typeName: 'author',
876+
typeClass: 'compound',
877+
multiple: true,
878+
value: [
879+
{
880+
authorName: { typeName: 'authorName', value: 'Belicheck, Bill' },
881+
authorAffiliation: { typeName: 'authorIdentifierScheme', value: 'ORCID' }
882+
}
883+
]
884+
}
885+
],
886+
instructions: [{ instructionField: 'author', instructionText: 'Updated instructions' }]
887+
}
888+
889+
await updateTemplateMetadata.execute(templateId, payload, replace)
890+
```
891+
892+
_See [use case](../src/templates/domain/useCases/UpdateTemplateMetadata.ts) definition_.
893+
894+
#### Update Template License Terms
895+
896+
Updates either the license name or custom terms of use for a template id.
897+
898+
##### Example call:
899+
900+
```typescript
901+
import { updateTemplateLicenseTerms } from '@iqss/dataverse-client-javascript'
902+
import { UpdateTemplateLicenseTermsDTO } from '@iqss/dataverse-client-javascript'
903+
904+
const templateId = 12345
905+
906+
const payload: UpdateTemplateLicenseTermsDTO = {
907+
customTerms: {
908+
termsOfUse: 'Updated template terms of use'
909+
}
910+
}
911+
912+
await updateTemplateLicenseTerms.execute(templateId, payload)
913+
```
914+
915+
_See [use case](../src/templates/domain/useCases/UpdateTemplateLicenseTerms.ts) definitition_.
916+
917+
#### Update Template Terms Of Access
918+
919+
Updates terms of access for a template id.
920+
921+
##### Example call:
922+
923+
```typescript
924+
import { updateTemplateTermsOfAccess } from '@iqss/dataverse-client-javascript'
925+
926+
const templateId = 12345
927+
928+
await updateTemplateTermsOfAccess.execute(templateId, {
929+
fileAccessRequest: true,
930+
termsOfAccessForRestrictedFiles: 'Restricted access only'
931+
})
932+
```
933+
934+
_See [use case](../src/templates/domain/useCases/UpdateTemplateTermsOfAccess.ts) definition_.
935+
741936
## Datasets
742937

743938
### Datasets Read Use Cases
@@ -1505,7 +1700,7 @@ _See [use case](../src/datasets/domain/useCases/GetDatasetTemplates.ts)_ definit
15051700

15061701
#### Get Dataset Storage Driver
15071702

1508-
Returns a [StorageDriver](../src/datasets/domain/models/StorageDriver.ts) instance with storage driver configuration for a dataset, including properties like name, type, label, and upload/download capabilities.
1703+
Returns a [StorageDriver](../src/core/domain/models/StorageDriver.ts) instance with storage driver configuration for a dataset, including properties like name, type, label, and upload/download capabilities.
15091704

15101705
##### Example call:
15111706

0 commit comments

Comments
 (0)