Skip to content

Commit d445bad

Browse files
Merge pull request #236 from contentstack/feat/dx-1595-add-delete-items
dx | 1595 | add and delete items
2 parents c5a6170 + 22c3d07 commit d445bad

File tree

5 files changed

+510
-219
lines changed

5 files changed

+510
-219
lines changed

lib/stack/bulkOperation/index.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,25 @@ export function BulkOperation (http, data = {}) {
99
this.stackHeaders = data.stackHeaders
1010
this.urlPath = `/bulk`
1111

12+
/**
13+
* The addItems request allows you to add multiple items to a release in bulk.
14+
* @memberof BulkOperation
15+
* @func addItems
16+
* @returns {Promise<Object>} Response Object.
17+
* @param {Object} params.data - The data containing the items to be added to the release.
18+
* @param {String} [params.bulk_version] - The bulk version.
19+
* @example
20+
* const itemsData = {
21+
* items: [
22+
* {
23+
* uid: '{{entry_uid}}',
24+
* content_type: '{{content_type_uid}}'
25+
* }
26+
* ]
27+
* }
28+
* client.stack({ api_key: 'api_key'}).bulkOperation().addItems({ data: itemsData })
29+
* .then((response) => { console.log(response) })
30+
*/
1231
this.addItems = async ({ data, bulk_version = "" }) => {
1332
this.urlPath = `/bulk/release/items`;
1433
const headers = {
@@ -27,6 +46,25 @@ export function BulkOperation (http, data = {}) {
2746
}
2847
};
2948

49+
/**
50+
* The updateItems request allows you to update multiple items in a release in bulk.
51+
* @memberof BulkOperation
52+
* @func updateItems
53+
* @returns {Promise<Object>} Response Object.
54+
* @param {Object} params.data - The data containing the items to be updated in the release.
55+
* @param {String} [params.bulk_version] - The bulk version.
56+
* @example
57+
* const itemsData = {
58+
* items: [
59+
* {
60+
* uid: '{{entry_uid}}',
61+
* content_type: '{{content_type_uid}}'
62+
* }
63+
* ]
64+
* }
65+
* client.stack({ api_key: 'api_key'}).bulkOperation().updateItems({ data: itemsData })
66+
* .then((response) => { console.log(response) })
67+
*/
3068
this.updateItems = async ({ data, bulk_version = "" }) => {
3169
this.urlPath = `/bulk/release/update_items`;
3270
const headers = {
@@ -45,6 +83,17 @@ export function BulkOperation (http, data = {}) {
4583
}
4684
};
4785

86+
/**
87+
* The jobStatus request allows you to check the status of a bulk job.
88+
* @memberof BulkOperation
89+
* @func jobStatus
90+
* @returns {Promise<Object>} Response Object.
91+
* @param {String} params.job_id - The ID of the job.
92+
* @param {String} [params.bulk_version] - The bulk version.
93+
* @example
94+
* client.stack({ api_key: 'api_key'}).bulkOperation().jobStatus({ job_id: 'job_id' })
95+
* .then((response) => { console.log(response) })
96+
*/
4897
this.jobStatus = async ({ job_id, bulk_version = "" }) => {
4998
this.urlPath = `/bulk/jobs/${job_id}`;
5099
const headers = {

lib/stack/release/items/index.js

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,25 +52,36 @@ export function ReleaseItem (http, data = {}) {
5252
* client.stack({ api_key: 'api_key'}).release('release_uid').delete({items})
5353
* .then((response) => console.log(response.notice))
5454
*/
55-
this.delete = async (items) => {
55+
this.delete = async (params) => {
5656
let param = {}
57-
if (items === undefined) {
57+
if (params.items === undefined && params.item === undefined) {
5858
param = {all: true}
59+
params.items = []
5960
}
6061
try {
6162
const headers = {
6263
headers: { ...cloneDeep(this.stackHeaders) },
6364
data: {
64-
...cloneDeep(items)
65+
...cloneDeep(params)
6566
},
6667
params: {
6768
...cloneDeep(param)
6869
}
6970
} || {}
71+
72+
if (params.release_version) {
73+
headers.headers['release_version'] = params.release_version;
74+
}
75+
76+
if (params.item) {
77+
this.urlPath = `releases/${data.releaseUid}/item`
78+
headers.data['item'] = params.item
79+
} else
80+
headers.data['items'] = params.items
7081

7182
const response = await http.delete(this.urlPath, headers)
7283
if (response.data) {
73-
return new Release(http, { ...response.data, stackHeaders: data.stackHeaders })
84+
return response.data
7485
} else {
7586
throw error(response)
7687
}
@@ -129,9 +140,18 @@ export function ReleaseItem (http, data = {}) {
129140
...cloneDeep(this.stackHeaders)
130141
}
131142
} || {}
143+
144+
if (param.release_version) {
145+
headers.headers['release_version'] = param.release_version;
146+
}
147+
if (param.item) {
148+
this.urlPath = `releases/${data.releaseUid}/item`
149+
param['item'] = param.item
150+
} else
151+
param['items'] = param.items
132152

133153
try {
134-
const response = await http.post(param.item ? `releases/${data.releaseUid}/item` : this.urlPath, param, headers)
154+
const response = await http.post(this.urlPath, param, headers)
135155
if (response.data) {
136156
if (response.data) {
137157
return new Release(http, { ...response.data, stackHeaders: data.stackHeaders })
@@ -181,6 +201,25 @@ export function ReleaseItem (http, data = {}) {
181201
}
182202
}
183203

204+
/**
205+
* The move request allows you to move multiple items within a release.
206+
* @memberof ReleaseItem
207+
* @func move
208+
* @returns {Promise<Object>} Response Object.
209+
* @param {Object} params.param - The data containing the items to be moved within the release.
210+
* @param {String} [params.release_version] - The release version.
211+
* @example
212+
* const moveData = {
213+
* items: [
214+
* {
215+
* uid: '{{entry_uid}}',
216+
* content_type: '{{content_type_uid}}'
217+
* }
218+
* ]
219+
* }
220+
* client.stack({ api_key: 'api_key'}).release('release_uid').item().move({ param: moveData, release_version: '1.0' })
221+
* .then((response) => { console.log(response) })
222+
*/
184223
this.move = async ({ param, release_version = '' }) => {
185224
const headers = {
186225
headers: {

0 commit comments

Comments
 (0)