backendless-console-sdk
Version:
Backendless Console SDK for Node.js and browser
264 lines (263 loc) • 13.6 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.dataTableFindUrl = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _data = require("./constants/data");
var _urls = _interopRequireDefault(require("./urls"));
var _totalRows = _interopRequireDefault(require("./utils/total-rows"));
var _cacheTags = require("./utils/cache-tags");
var _table = require("./utils/table");
var _routes = require("./utils/routes");
var _COLUMNS_URL_SUFFIX;
/* eslint-disable max-len */
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var RELATION_URL_SUFFIX = 'relation';
var GEO_RELATION_URL_SUFFIX = 'georelation';
var COLUMNS_URL_SUFFIX = (_COLUMNS_URL_SUFFIX = {}, (0, _defineProperty2["default"])(_COLUMNS_URL_SUFFIX, _data.DataTypes.DATA_REF, RELATION_URL_SUFFIX), (0, _defineProperty2["default"])(_COLUMNS_URL_SUFFIX, _data.DataTypes.GEO_REF, GEO_RELATION_URL_SUFFIX), _COLUMNS_URL_SUFFIX);
var isRelType = function isRelType(dataType) {
return dataType === _data.DataTypes.DATA_REF || dataType === _data.DataTypes.GEO_REF;
};
var tableColumnsUrl = function tableColumnsUrl(appId, table) {
return _urls["default"].tableColumns(appId, table.name);
};
var tableUrl = function tableUrl(appId, table) {
return "".concat(_urls["default"].dataTables(appId), "/").concat(encodeURI(table.name));
};
var removeRecordsUrl = function removeRecordsUrl(appId, table, removeAll) {
return "".concat(tableUrl(appId, table), "/").concat(removeAll ? 'all' : 'records');
};
var assignedUserRoles = function assignedUserRoles(appId) {
return "".concat(_urls["default"].security(appId), "/assignedroles");
};
var dataTableFindUrl = function dataTableFindUrl(appId, tableName) {
return "".concat(_urls["default"].dataTable(appId, tableName), "/find");
};
exports.dataTableFindUrl = dataTableFindUrl;
var updateRelationsUrl = function updateRelationsUrl(appId, table, columnName, recordId) {
return "".concat(_urls["default"].dataRecord(appId, table.name, recordId), "/").concat(columnName);
};
var removeRelationsUrl = function removeRelationsUrl(appId, table, columnName, recordId) {
return "".concat(updateRelationsUrl(appId, table, columnName, recordId), "/relations");
};
var recordsReq = function recordsReq(req, appId, table, query, resetCache) {
return (0, _table.tableRecordsReq)(req, dataTableFindUrl(appId, table.name), table, query, resetCache);
};
var recordsCountReq = function recordsCountReq(req, appId, table, query, resetCache) {
var newQuery = _objectSpread({}, query);
delete newQuery.property;
return (0, _table.tableRecordsCountReq)(req, _urls["default"].dataTable(appId, table.name), table, newQuery, resetCache);
};
var getRelationColumn = function getRelationColumn(table, columnName) {
return [].concat((0, _toConsumableArray2["default"])(table.relations), (0, _toConsumableArray2["default"])(table.geoRelations)).find(function (r) {
return r.name === columnName;
});
};
var routes = (0, _routes.prepareRoutes)({
tableOwnerPolicyDelayCheck: '/:appId/console/data/tables/:tableName/acl/owner-policy-delay-check'
});
var _default = function _default(req) {
return {
get: function get(appId, query) {
return req.get(_urls["default"].dataTables(appId)).query(query).then(function (resp) {
return _objectSpread(_objectSpread({}, resp), {}, {
tables: resp.tables.map(normalizeTable)
});
});
},
create: function create(appId, table) {
return req.post(_urls["default"].dataTables(appId), table).then(normalizeTable);
},
update: function update(appId, table, props) {
return req.put(tableUrl(appId, table), props).then(normalizeTable);
},
remove: function remove(appId, table) {
return req["delete"](tableUrl(appId, table));
},
loadRecords: function loadRecords(appId, table, query, ignoreCounter) {
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
var dataRequest, countRequest, _yield$Promise$all, _yield$Promise$all2, total, data;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
dataRequest = recordsReq(req, appId, table, query);
if (!ignoreCounter) {
_context.next = 3;
break;
}
return _context.abrupt("return", dataRequest);
case 3:
countRequest = (0, _totalRows["default"])(req).getViaPostFor(recordsCountReq(req, appId, table, query));
_context.next = 6;
return Promise.all([countRequest, dataRequest]);
case 6:
_yield$Promise$all = _context.sent;
_yield$Promise$all2 = (0, _slicedToArray2["default"])(_yield$Promise$all, 2);
total = _yield$Promise$all2[0];
data = _yield$Promise$all2[1];
return _context.abrupt("return", {
totalRows: total,
data: data
});
case 11:
case "end":
return _context.stop();
}
}, _callee);
}))();
},
exportRecords: function exportRecords(appId, connectorId, table, query) {
var sqlSearch = query.sqlSearch,
where = query.where,
filterString = query.filterString,
sortBy = query.sortBy,
props = query.props;
var tableName = connectorId ? "".concat(connectorId, ".").concat(table.name) : table.name;
var search = (0, _table.buildRecordsSearch)(table, sqlSearch, where, filterString);
var params = {
sortBy: sortBy,
props: props
};
if (search) {
params.where = search;
}
if (Array.isArray(params.sortBy)) {
params.sortBy = params.sortBy.join(',');
}
if (Array.isArray(params.props)) {
params.props = params.props.join(',');
}
if (!params.sortBy) {
delete params.sortBy;
}
if (!params.props) {
delete params.props;
}
return req.post("".concat(_urls["default"].dataTable(appId, tableName), "/csv"), params);
},
getRecordsCount: function getRecordsCount(appId, table, query, resetCache) {
return (0, _totalRows["default"])(req).getViaPostFor(recordsCountReq(req, appId, table, query, resetCache));
},
getCount: function getCount(appId, table, query) {
return (0, _totalRows["default"])(req).getFor(recordsCountReq(req, appId, table, query));
},
getRecordsCountForTables: function getRecordsCountForTables(appId, tables, connectorId, resetCache) {
return req.post("".concat(_urls["default"].data(appId), "/tables-counters"), {
tables: tables,
connectorId: connectorId,
resetCache: resetCache
});
},
getCellData: function getCellData(appId, tableName, recordId, columnName) {
return req.get("".concat(_urls["default"].dataCell(appId, tableName, recordId, columnName), "/retrieve-value"));
},
createRecord: function createRecord(appId, table, record) {
return req.post(_urls["default"].dataTable(appId, table.name), record).cacheTags((0, _cacheTags.TABLE_DATA)(table.tableId));
},
bulkCreateRecords: function bulkCreateRecords(appId, tableName, records) {
return req.post(_urls["default"].dataTableBulkCreate(appId, tableName), records);
},
bulkUpsertRecords: function bulkUpsertRecords(appId, tableName, records) {
return req.put(_urls["default"].dataTableBulkUpsert(appId, tableName), records);
},
updateRecord: function updateRecord(appId, table, record) {
return req.put(_urls["default"].dataRecord(appId, table.name, record.objectId), record);
},
updateImageTypeRecord: function updateImageTypeRecord(appId, table, record) {
return req.put("".concat(_urls["default"].dataTable(appId, table.name), "/file/").concat(record.columnName, "/").concat(record.objectId), record.value);
},
deleteRecords: function deleteRecords(appId, table, recordIds) {
var url = removeRecordsUrl(appId, table, !recordIds);
var removeItems = recordIds && recordIds.map(function (objectId) {
return {
objectId: objectId
};
});
return req["delete"](url, removeItems).cacheTags((0, _cacheTags.TABLE_DATA)(table.tableId));
},
deleteImageTypeRecord: function deleteImageTypeRecord(appId, tableName, columnName, recordId) {
return req["delete"]("".concat(_urls["default"].dataTable(appId, tableName), "/file/").concat(columnName, "/").concat(recordId));
},
updateRelations: function updateRelations(appId, table, columnName, recordId, relationIds) {
var relationColumn = getRelationColumn(table, columnName);
return req.put(updateRelationsUrl(appId, table, columnName, recordId), relationIds).cacheTags((0, _cacheTags.TABLE_DATA)(relationColumn.toTableId));
},
removeRelations: function removeRelations(appId, table, columnName, recordId, relationIds) {
var relationColumn = getRelationColumn(table, columnName);
return req["delete"](removeRelationsUrl(appId, table, columnName, recordId), relationIds).cacheTags((0, _cacheTags.TABLE_DATA)(relationColumn.toTableId));
},
createColumn: function createColumn(appId, table, column) {
var url = tableColumnsUrl(appId, table);
var urlSuffix = COLUMNS_URL_SUFFIX[column.dataType];
return req.post(url + (urlSuffix ? "/".concat(urlSuffix) : ''), column).then(function (resp) {
return _objectSpread(_objectSpread({}, resp), {}, {
dataType: column.dataType
});
});
},
deleteColumn: function deleteColumn(appId, table, column) {
var path = tableColumnsUrl(appId, table);
var columnName = encodeURI(column.name);
if (isRelType(column.dataType)) {
return req["delete"]("".concat(path, "/").concat(RELATION_URL_SUFFIX, "/").concat(columnName));
}
return req["delete"]("".concat(path, "/").concat(columnName));
},
updateColumn: function updateColumn(appId, table, prevColumn, column) {
var urlSuffix = COLUMNS_URL_SUFFIX[prevColumn.dataType] || prevColumn.name;
var url = tableColumnsUrl(appId, table);
return req.put("".concat(url, "/").concat(urlSuffix), column).then(function (resp) {
return _objectSpread(_objectSpread({}, resp), {}, {
dataType: resp.dataType || prevColumn.dataType
});
});
},
loadConfigs: function loadConfigs(appId) {
return req.get(_urls["default"].dataConfigs(appId));
},
setConfigs: function setConfigs(appId, configs) {
return req.put(_urls["default"].dataConfigs(appId), configs);
},
loadAssignedUserRoles: function loadAssignedUserRoles(appId, users) {
return req.get(assignedUserRoles(appId)).query({
users: users.join(',')
});
},
updateAssignedUserRoles: function updateAssignedUserRoles(appId, roles, users) {
return req.put(assignedUserRoles(appId), {
roles: roles,
users: users
});
},
loadTableOwnerPolicyDelayCheck: function loadTableOwnerPolicyDelayCheck(appId, tableName) {
return req.get(routes.tableOwnerPolicyDelayCheck(appId, tableName));
},
changeTableOwnerPolicyDelayCheck: function changeTableOwnerPolicyDelayCheck(appId, tableName, data) {
return req.put(routes.tableOwnerPolicyDelayCheck(appId, tableName), data);
}
};
};
exports["default"] = _default;
var normalizeTable = function normalizeTable(table) {
return _objectSpread(_objectSpread({}, table), {}, {
relations: table.relations && table.relations.map(normalizeDataRelationTableColumn) || [],
geoRelations: table.geoRelations && table.geoRelations.map(normalizeGEORelationTableColumn) || []
});
};
var normalizeDataRelationTableColumn = function normalizeDataRelationTableColumn(relation) {
return _objectSpread(_objectSpread({}, relation), {}, {
dataType: _data.DataTypes.DATA_REF
});
};
var normalizeGEORelationTableColumn = function normalizeGEORelationTableColumn(relation) {
return _objectSpread(_objectSpread({}, relation), {}, {
dataType: _data.DataTypes.GEO_REF
});
};