@kintone/kintone-js-sdk
Version:
The SDK of kintone REST API client on node and browser
307 lines (275 loc) • 10.6 kB
JavaScript
import "core-js/modules/web.url.to-json";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _createClass from "@babel/runtime/helpers/createClass";
import RecordModel from '../../model/record/RecordModels';
import BulkRequestItemModel from '../../model/bulkRequest/BulkRequestItem';
import BulkRequestModel from '../../model/bulkRequest/BulkRequest';
import Connection from '../../connection/Connection';
import KintoneAPIException from '../../exception/KintoneAPIException';
/**
* BulkRequest module
*/
var BulkRequest = /*#__PURE__*/function () {
/**
* Constructor function of BulkRequest
* @param {Object} params
* @param {Connection} params.connection
*/
function BulkRequest() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
connection = _ref.connection;
_classCallCheck(this, BulkRequest);
if (!(connection instanceof Connection)) {
throw new KintoneAPIException("".concat(connection, " is not an instance of Connection"));
}
this.connection = connection;
this.bulkRequests = new BulkRequestModel();
}
/**
* Add the record
* @param {Object} params
* @param {Number} params.app
* @param {Record} params.record
* @return {this}
*/
_createClass(BulkRequest, [{
key: "addRecord",
value: function addRecord() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
app = _ref2.app,
record = _ref2.record;
var addRecordRequest = new RecordModel.AddRecordRequest(app, record);
var bulkRequestItem = new BulkRequestItemModel('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}
*/
}, {
key: "addRecords",
value: function addRecords() {
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
app = _ref3.app,
records = _ref3.records;
var addRecordsRequest = new RecordModel.AddRecordsRequest(app);
addRecordsRequest.setRecords(records);
var bulkRequestItem = new BulkRequestItemModel('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}
*/
}, {
key: "updateRecordByID",
value: function updateRecordByID() {
var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
app = _ref4.app,
id = _ref4.id,
record = _ref4.record,
revision = _ref4.revision;
var updateRecordRequest = new RecordModel.UpdateRecordRequest(app);
updateRecordRequest.setID(id).setRecord(record).setRevision(revision || 0);
var bulkRequestItem = new BulkRequestItemModel('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}
*/
}, {
key: "updateRecordByUpdateKey",
value: function updateRecordByUpdateKey() {
var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
app = _ref5.app,
updateKey = _ref5.updateKey,
record = _ref5.record,
revision = _ref5.revision;
var fieldKey = updateKey ? updateKey.field : undefined;
var fieldValue = updateKey ? updateKey.value : undefined;
var updateRecordRequest = new RecordModel.UpdateRecordRequest(app);
updateRecordRequest.setUpdateKey(fieldKey, fieldValue).setRecord(record).setRevision(revision || 0);
var bulkRequestItem = new BulkRequestItemModel('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}
*/
}, {
key: "updateRecords",
value: function updateRecords() {
var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
app = _ref6.app,
records = _ref6.records;
var updateRecordsRequest = new RecordModel.UpdateRecordsRequest(app, records);
var bulkRequestItem = new BulkRequestItemModel('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}
*/
}, {
key: "deleteRecords",
value: function deleteRecords() {
var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
app = _ref7.app,
ids = _ref7.ids;
var deleteRecordsRequest = new RecordModel.DeleteRecordsRequest(app);
deleteRecordsRequest.setIDs(ids);
var bulkRequestItem = new BulkRequestItemModel('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}
*/
}, {
key: "deleteRecordsWithRevision",
value: function deleteRecordsWithRevision() {
var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
app = _ref8.app,
idsWithRevision = _ref8.idsWithRevision;
var deleteRecordsRequest = new RecordModel.DeleteRecordsRequest(app);
deleteRecordsRequest.setIDsWithRevision(idsWithRevision);
var bulkRequestItem = new BulkRequestItemModel('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}
*/
}, {
key: "updateRecordAssignees",
value: function updateRecordAssignees() {
var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
app = _ref9.app,
record = _ref9.record,
assignees = _ref9.assignees,
revision = _ref9.revision;
var updateRecordRequest = new RecordModel.UpdateRecordAssigneesRequest(app, record, assignees, revision);
var bulkRequestItem = new BulkRequestItemModel('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}
*/
}, {
key: "updateRecordStatus",
value: function updateRecordStatus() {
var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
app = _ref10.app,
id = _ref10.id,
action = _ref10.action,
assignee = _ref10.assignee,
revision = _ref10.revision;
var updateRecordRequest = new RecordModel.UpdateRecordStatusRequest(app, id, action, assignee, revision);
var bulkRequestItem = new BulkRequestItemModel('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}
*/
}, {
key: "updateRecordsStatus",
value: function updateRecordsStatus() {
var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
app = _ref11.app,
records = _ref11.records;
var updateRecordsRequest = new RecordModel.UpdateRecordsRequest(app, records);
var bulkRequestItem = new BulkRequestItemModel('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}
*/
}, {
key: "execute",
value: function execute() {
var _this = this;
return this.connection.addRequestOption({
key: 'json',
value: true
}).request('POST', 'BULK_REQUEST', this.bulkRequests.toJSON()).then(function (result) {
return result;
}).catch(function (err) {
if (!err || !err.response || !err.response.data || err.response.data.code) {
throw new KintoneAPIException(err.message, err);
}
var errors = err.response.data.results;
throw _this.bulkRequestException(errors);
});
}
}, {
key: "bulkRequestException",
value: function bulkRequestException(errors) {
var formatErr = JSON.stringify({
response: {}
});
var formatErrors = [];
for (var key in errors) {
if (errors[key].hasOwnProperty('code')) {
var errObject = JSON.parse(formatErr);
errObject.response.data = errors[key];
formatErrors.push(new KintoneAPIException(errObject.message, errObject));
} else {
formatErrors.push(errors[key]);
}
}
return formatErrors;
}
}]);
return BulkRequest;
}();
export default BulkRequest;