UNPKG

backendless-console-sdk

Version:

Backendless Console SDK for Node.js and browser

264 lines (263 loc) 13.6 kB
"use strict"; 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 }); };