-
Notifications
You must be signed in to change notification settings - Fork 13
/
updateVersionMetadata.ts
51 lines (47 loc) · 1.41 KB
/
updateVersionMetadata.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import { IHubUserRequestOptions } from "../types";
import { mergeObjects } from "../objects/merge-objects";
import { objectToJsonBlob } from "../resources/object-to-json-blob";
import { IVersionMetadata } from "./types";
import { getPrefix } from "./_internal/getPrefix";
import {
VERSION_RESOURCE_NAME,
VERSION_RESOURCE_PROPERTIES,
} from "./_internal/constants";
import { getVersion } from "./getVersion";
import { updateItemResource } from "@esri/arcgis-rest-portal";
/**
* Updates the specified version's metadata
* @param id
* @param versionMetadata
* @param owner
* @param requestOptions
* @returns
*/
export async function updateVersionMetadata(
id: string,
versionMetadata: IVersionMetadata,
owner: string,
requestOptions: IHubUserRequestOptions
): Promise<IVersionMetadata> {
const prefix = getPrefix(versionMetadata.id);
const properties = mergeObjects(
versionMetadata,
{},
VERSION_RESOURCE_PROPERTIES
);
// fetch the whole version so we can update it
const version = await getVersion(id, versionMetadata.id, requestOptions);
// apply the metadata to the version
mergeObjects(versionMetadata, version, VERSION_RESOURCE_PROPERTIES);
const versionBlob = objectToJsonBlob(version);
await updateItemResource({
...requestOptions,
id,
name: VERSION_RESOURCE_NAME,
owner,
params: { properties },
prefix,
resource: versionBlob,
});
return versionMetadata;
}