@kintone/kintone-js-sdk
Version:
The SDK of kintone REST API client on node and browser
288 lines (251 loc) • 8.38 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _RecordModels = _interopRequireDefault(require("../../model/record/RecordModels"));
var _BulkRequestItem = _interopRequireDefault(require("../../model/bulkRequest/BulkRequestItem"));
var _BulkRequest = _interopRequireDefault(require("../../model/bulkRequest/BulkRequest"));
var _Connection = _interopRequireDefault(require("../../connection/Connection"));
var _KintoneAPIException = _interopRequireDefault(require("../../exception/KintoneAPIException"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* BulkRequest module
*/
class BulkRequest {
/**
* Constructor function of BulkRequest
* @param {Object} params
* @param {Connection} params.connection
*/
constructor({
connection
} = {}) {
if (!(connection instanceof _Connection.default)) {
throw new _KintoneAPIException.default(`${connection} is not an instance of Connection`);
}
this.connection = connection;
this.bulkRequests = new _BulkRequest.default();
}
/**
* Add the record
* @param {Object} params
* @param {Number} params.app
* @param {Record} params.record
* @return {this}
*/
addRecord({
app,
record
} = {}) {
const addRecordRequest = new _RecordModels.default.AddRecordRequest(app, record);
const bulkRequestItem = new _BulkRequestItem.default('POST', this.connection.getPathURI('RECORD'), addRecordRequest);
this.bulkRequests.addRequest(bulkRequestItem);
return this;
}
/**
* Add multi records
* @param {Object} params
* @param {Number} params.app
* @param {Array<record>} params.records
* @return {this}
*/
addRecords({
app,
records
} = {}) {
const addRecordsRequest = new _RecordModels.default.AddRecordsRequest(app);
addRecordsRequest.setRecords(records);
const bulkRequestItem = new _BulkRequestItem.default('POST', this.connection.getPathURI('RECORDS'), addRecordsRequest);
this.bulkRequests.addRequest(bulkRequestItem);
return this;
}
/**
* Update the specific record by ID
* @param {Object} params
* @param {Number} params.app
* @param {Number} params.id
* @param {Record} params.record
* @param {Number} params.revision
* @return {this}
*/
updateRecordByID({
app,
id,
record,
revision
} = {}) {
const updateRecordRequest = new _RecordModels.default.UpdateRecordRequest(app);
updateRecordRequest.setID(id).setRecord(record).setRevision(revision || 0);
const bulkRequestItem = new _BulkRequestItem.default('PUT', this.connection.getPathURI('RECORD'), updateRecordRequest);
this.bulkRequests.addRequest(bulkRequestItem);
return this;
}
/**
* Update the specific record by updateKey
* @param {Object} params
* @param {Number} params.app
* @param {RecordUpdateKey} params.updateKey
* @param {Record} params.record
* @param {Number} params.revision
* @return {this}
*/
updateRecordByUpdateKey({
app,
updateKey,
record,
revision
} = {}) {
const fieldKey = updateKey ? updateKey.field : undefined;
const fieldValue = updateKey ? updateKey.value : undefined;
const updateRecordRequest = new _RecordModels.default.UpdateRecordRequest(app);
updateRecordRequest.setUpdateKey(fieldKey, fieldValue).setRecord(record).setRevision(revision || 0);
const bulkRequestItem = new _BulkRequestItem.default('PUT', this.connection.getPathURI('RECORD'), updateRecordRequest);
this.bulkRequests.addRequest(bulkRequestItem);
return this;
}
/**
* Update multi records
* @param {Object} params
* @param {Number} params.app
* @param {Array<RecordUpdateItem>} params.records
* @return {this}
*/
updateRecords({
app,
records
} = {}) {
const updateRecordsRequest = new _RecordModels.default.UpdateRecordsRequest(app, records);
const bulkRequestItem = new _BulkRequestItem.default('PUT', this.connection.getPathURI('RECORDS'), updateRecordsRequest);
this.bulkRequests.addRequest(bulkRequestItem);
return this;
}
/**
* Delete multi records
* @param {Object} params
* @param {Number} params.app
* @param {Array<Number>} params.ids
* @return {this}
*/
deleteRecords({
app,
ids
} = {}) {
const deleteRecordsRequest = new _RecordModels.default.DeleteRecordsRequest(app);
deleteRecordsRequest.setIDs(ids);
const bulkRequestItem = new _BulkRequestItem.default('DELETE', this.connection.getPathURI('RECORDS'), deleteRecordsRequest);
this.bulkRequests.addRequest(bulkRequestItem);
return this;
}
/**
* Delete records at the specific revision
* @param {Object} params
* @param {Number} params.app
* @param {Object} params.idsWithRevision
* @return {this}
*/
deleteRecordsWithRevision({
app,
idsWithRevision
} = {}) {
const deleteRecordsRequest = new _RecordModels.default.DeleteRecordsRequest(app);
deleteRecordsRequest.setIDsWithRevision(idsWithRevision);
const bulkRequestItem = new _BulkRequestItem.default('DELETE', this.connection.getPathURI('RECORDS'), deleteRecordsRequest);
this.bulkRequests.addRequest(bulkRequestItem);
return this;
}
/**
* Update assignees of the specific record
* @param {Object} params
* @param {Number} params.app
* @param {Number} params.record
* @param {Array<String>} params.assignees
* @param {Number} params.revision
* @return {this}
*/
updateRecordAssignees({
app,
record,
assignees,
revision
} = {}) {
const updateRecordRequest = new _RecordModels.default.UpdateRecordAssigneesRequest(app, record, assignees, revision);
const bulkRequestItem = new _BulkRequestItem.default('PUT', this.connection.getPathURI('RECORD_ASSIGNEES'), updateRecordRequest);
this.bulkRequests.addRequest(bulkRequestItem);
return this;
}
/**
* Update status of the specific record
* @param {Object} params
* @param {Number} params.app
* @param {Number} params.id
* @param {String} params.action
* @param {String} params.assignee
* @param {Number} params.revision
* @return {this}
*/
updateRecordStatus({
app,
id,
action,
assignee,
revision
} = {}) {
const updateRecordRequest = new _RecordModels.default.UpdateRecordStatusRequest(app, id, action, assignee, revision);
const bulkRequestItem = new _BulkRequestItem.default('PUT', this.connection.getPathURI('RECORD_STATUS'), updateRecordRequest);
this.bulkRequests.addRequest(bulkRequestItem);
return this;
}
/**
* Update status of the multi records
* @param {Object} params
* @param {Number} params.app
* @param {Array<{RecordStatusUpdate}>} params.records
* @return {this}
*/
updateRecordsStatus({
app,
records
} = {}) {
const updateRecordsRequest = new _RecordModels.default.UpdateRecordsRequest(app, records);
const bulkRequestItem = new _BulkRequestItem.default('PUT', this.connection.getPathURI('RECORDS_STATUS'), updateRecordsRequest);
this.bulkRequests.addRequest(bulkRequestItem);
return this;
}
/**
* Execute the BulkRequest and get data which is returned from kintone.
* @return {Promise}
*/
execute() {
return this.connection.addRequestOption({
key: 'json',
value: true
}).request('POST', 'BULK_REQUEST', this.bulkRequests.toJSON()).then(result => {
return result;
}).catch(err => {
if (!err || !err.response || !err.response.data || err.response.data.code) {
throw new _KintoneAPIException.default(err.message, err);
}
const errors = err.response.data.results;
throw this.bulkRequestException(errors);
});
}
bulkRequestException(errors) {
const formatErr = JSON.stringify({
response: {}
});
const formatErrors = [];
for (const key in errors) {
if (errors[key].hasOwnProperty('code')) {
const errObject = JSON.parse(formatErr);
errObject.response.data = errors[key];
formatErrors.push(new _KintoneAPIException.default(errObject.message, errObject));
} else {
formatErrors.push(errors[key]);
}
}
return formatErrors;
}
}
var _default = BulkRequest;
exports.default = _default;