backendless-console-sdk
Version:
Backendless Console SDK for Node.js and browser
650 lines (612 loc) • 36.9 kB
JavaScript
"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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
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 _baseService = _interopRequireDefault(require("./base/base-service"));
var _COLUMNS_URL_SUFFIX;
/* eslint-disable max-len */
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = (0, _getPrototypeOf2["default"])(t); if (r) { var s = (0, _getPrototypeOf2["default"])(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return (0, _possibleConstructorReturn2["default"])(this, e); }; }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
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 = exports.dataTableFindUrl = function dataTableFindUrl(appId, tableName) {
return "".concat(_urls["default"].dataTable(appId, tableName), "/find");
};
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 Tables = /*#__PURE__*/function (_BaseService) {
(0, _inherits2["default"])(Tables, _BaseService);
var _super = _createSuper(Tables);
function Tables(req) {
var _this;
(0, _classCallCheck2["default"])(this, Tables);
_this = _super.call(this, req);
_this.serviceName = 'tables';
return _this;
}
/**
* @typedef {Object} get__query
* @paramDef {"type":"boolean","label":"Force Refresh","name":"forceRefresh","required":false,"description":"Force refresh of tables data from the server, bypassing cache"}
*/
/**
* @aiToolName Get Tables
* @category Data
* @description Get all tables for an application with optional cache refresh
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"get__query","name":"query","label":"Query Parameters","description":"Query parameters including force refresh option","required":false}
* @sampleResult {"mode":"internal","tables":[{"tableId":"83C2C5B4-2249-48F2-816A-CA009958A64F","view":false,"name":"Users","dataConnector":false,"columns":[{"columnId":"4827244D-CE8D-4C31-8258-392E2100552A","name":"objectId","dataType":"STRING_ID","isPrimaryKey":true},{"columnId":"1D8C7FFF-19BB-4B79-9D5F-ECE91F4772AB","name":"name","dataType":"STRING","isPrimaryKey":false}],"relations":[],"system":true,"parentRelations":[],"geoRelations":[]}]}
*/
(0, _createClass2["default"])(Tables, [{
key: "get",
value: function get(appId, query) {
return this.req.get(_urls["default"].dataTables(appId)).query(query).then(function (resp) {
return _objectSpread(_objectSpread({}, resp), {}, {
tables: resp.tables.map(normalizeTable)
});
});
}
/**
* @typedef {Object} create__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The name of the table to create"}
*/
/**
* @aiToolName Create Table
* @category Data
* @description Create a new data table
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"create__table","name":"table","label":"Table Data","description":"Object containing table name and configuration","required":true}
* @sampleResult {"tableId":"table123","view":false,"name":"NewTable","dataConnector":false,"columns":[{"columnId":"col123","name":"objectId","dataType":"STRING_ID","isPrimaryKey":true}],"relations":[],"system":false,"parentRelations":null,"geoRelations":[]}
*/
}, {
key: "create",
value: function create(appId, table) {
return this.req.post(_urls["default"].dataTables(appId), table).then(normalizeTable);
}
/**
* @typedef {Object} update__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The current name of the table to update"}
*/
/**
* @typedef {Object} update__props
* @paramDef {"type":"string","label":"New Name","name":"name","required":true,"description":"The new name for the table"}
*/
/**
* @aiToolName Update Table
* @category Data
* @description Update a data table name
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"update__table","name":"table","label":"Table Object","description":"Object containing current table name","required":true}
* @paramDef {"type":"update__props","name":"props","label":"Update Properties","description":"Object containing the new table name","required":true}
* @sampleResult {"name":"UpdatedTable","tableId":"table123","columns":[{"columnId":"col123","name":"objectId","dataType":"STRING_ID","isPrimaryKey":true}],"relations":[],"geoRelations":[]}
*/
}, {
key: "update",
value: function update(appId, table, props) {
return this.req.put(tableUrl(appId, table), props).then(normalizeTable);
}
/**
* @typedef {Object} remove__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The name of the table to remove"}
*/
/**
* @aiToolName Remove Table
* @category Data
* @description Remove a data table
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"remove__table","name":"table","label":"Table Object","description":"Object containing table name to remove","required":true}
* @sampleResult true
*/
}, {
key: "remove",
value: function remove(appId, table) {
return this.req["delete"](tableUrl(appId, table));
}
/**
* @typedef {Object} loadRecords__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The name of the table to load records from"}
*/
/**
* @typedef {Object} loadRecords__query
* @paramDef {"type":"number","label":"Page Size","name":"pageSize","required":false,"description":"Number of records to retrieve (default: 15)"}
* @paramDef {"type":"number","label":"Offset","name":"offset","required":false,"description":"Starting position for record retrieval (default: 0)"}
* @paramDef {"type":"string","label":"Where Clause","name":"where","required":false,"description":"WHERE clause condition for filtering records (e.g., \"coll='value'\")"}
* @paramDef {"type":"array","label":"Properties","name":"property","required":false,"description":"Array of specific properties to retrieve (e.g., [\"`created`\", \"`objectId`\"])"}
* @paramDef {"type":"string","label":"Group By","name":"groupBy","required":false,"description":"Field to group results by (e.g., \"objectId\")"}
*/
/**
* @aiToolName Load Records
* @category Data
* @description Load records from a data table with flexible query options
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"loadRecords__table","name":"table","label":"Table Object","description":"Object containing table name","required":true}
* @paramDef {"type":"loadRecords__query","name":"query","label":"Query Parameters","description":"Query options for filtering, sorting, and pagination","required":false}
* @paramDef {"type":"boolean","name":"ignoreCounter","label":"Ignore Counter","description":"Whether to ignore the row counter for better performance","required":false}
* @sampleResult {"totalRows":4,"data":[{"coll":null,"created":1757609268010,"___class":"testTable","ownerId":null,"updated":null,"objectId":"SAMPLE-ID-1"},{"coll":"sample_value","created":1757609221217,"___class":"testTable","ownerId":null,"updated":1757609259012,"objectId":"SAMPLE-ID-2"}]}
*/
}, {
key: "loadRecords",
value: (function () {
var _loadRecords = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(appId, table, query, ignoreCounter) {
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(this.req, appId, table, query);
if (!ignoreCounter) {
_context.next = 3;
break;
}
return _context.abrupt("return", dataRequest);
case 3:
countRequest = (0, _totalRows["default"])(this.req).getViaPostFor(recordsCountReq(this.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, this);
}));
function loadRecords(_x, _x2, _x3, _x4) {
return _loadRecords.apply(this, arguments);
}
return loadRecords;
}())
}, {
key: "exportRecords",
value: 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 this.req.post("".concat(_urls["default"].dataTable(appId, tableName), "/csv"), params);
}
/**
* @typedef {Object} getRecordsCount__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The name of the table to count records in"}
* @paramDef {"type":"string","label":"Table ID","name":"tableId","required":true,"description":"The unique identifier of the table"}
* @paramDef {"type":"array","label":"Relations","name":"relations","required":false,"description":"Array of relation objects (obtained from get tables method)"}
* @paramDef {"type":"array","label":"Geo Relations","name":"geoRelations","required":false,"description":"Array of geo relation objects (obtained from get tables method)"}
*/
/**
* @aiToolName Get Records Count
* @category Data
* @description Get the count of records in a table
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"getRecordsCount__table","name":"table","label":"Table Object","description":"Full table object (obtain from tables.get() method)","required":true}
* @paramDef {"type":"object","name":"query","label":"Query","description":"The query parameters for filtering records","required":false}
* @paramDef {"type":"boolean","name":"resetCache","label":"Reset Cache","description":"Whether to reset the cache","required":false}
* @sampleResult 150
*/
}, {
key: "getRecordsCount",
value: function getRecordsCount(appId, table, query, resetCache) {
return (0, _totalRows["default"])(this.req).getViaPostFor(recordsCountReq(this.req, appId, table, query, resetCache));
}
/**
* @typedef {Object} getCount__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The name of the table to count records in"}
* @paramDef {"type":"string","label":"Table ID","name":"tableId","required":true,"description":"The unique identifier of the table"}
* @paramDef {"type":"array","label":"Relations","name":"relations","required":false,"description":"Array of relation objects (obtained from get tables method)"}
* @paramDef {"type":"array","label":"Geo Relations","name":"geoRelations","required":false,"description":"Array of geo relation objects (obtained from get tables method)"}
*/
/**
* @aiToolName Get Count
* @category Data
* @description Get the count of records matching a query
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"getCount__table","name":"table","label":"Table Object","description":"Full table object (obtain from tables.get() method)","required":true}
* @paramDef {"type":"object","name":"query","label":"Query","description":"The query parameters for filtering records","required":false}
* @sampleResult 75
*/
}, {
key: "getCount",
value: function getCount(appId, table, query) {
return (0, _totalRows["default"])(this.req).getFor(recordsCountReq(this.req, appId, table, query));
}
/**
* @aiToolName Get Records Count For Tables
* @category Data
* @description Get record counts for multiple tables
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"array","name":"tables","label":"Tables","description":"Array of table names","required":true}
* @paramDef {"type":"string","name":"connectorId","label":"Connector ID","description":"The connector identifier","required":false}
* @paramDef {"type":"boolean","name":"resetCache","label":"Reset Cache","description":"Whether to reset the cache","required":false}
* @sampleResult {"Users":150,"Orders":75,"Products":300}
*/
}, {
key: "getRecordsCountForTables",
value: function getRecordsCountForTables(appId, tables, connectorId, resetCache) {
return this.req.post("".concat(_urls["default"].data(appId), "/tables-counters"), {
tables: tables,
connectorId: connectorId,
resetCache: resetCache
});
}
/**
* @aiToolName Get Cell Data
* @category Data
* @description Get data from a specific table cell
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"string","name":"tableName","label":"Table Name","description":"The name of the table","required":true}
* @paramDef {"type":"string","name":"recordId","label":"Record ID","description":"The identifier of the record","required":true}
* @paramDef {"type":"string","name":"columnName","label":"Column Name","description":"The name of the column","required":true}
* @sampleResult "John Doe"
*/
}, {
key: "getCellData",
value: function getCellData(appId, tableName, recordId, columnName) {
return this.req.get("".concat(_urls["default"].dataCell(appId, tableName, recordId, columnName), "/retrieve-value"));
}
/**
* @typedef {Object} createRecord__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The name of the table to create record in"}
*/
/**
* @aiToolName Create Record
* @category Data
* @description Create a new record in a data table
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"createRecord__table","name":"table","label":"Table Object","description":"Object containing table name","required":true}
* @paramDef {"type":"object","name":"record","label":"Record","description":"The record data to create","required":true}
* @sampleResult {"coll":"test_value","created":1757611485750,"name":"Test User","___class":"testTable","ownerId":null,"updated":null,"email":"test@example.com","objectId":"SAMPLE-ID-123"}
*/
}, {
key: "createRecord",
value: function createRecord(appId, table, record) {
return this.req.post(_urls["default"].dataTable(appId, table.name), record).cacheTags((0, _cacheTags.TABLE_DATA)(table.tableId));
}
/**
* @aiToolName Bulk Create Records
* @category Data
* @description Create multiple records at once
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"string","name":"tableName","label":"Table Name","description":"The name of the table","required":true}
* @paramDef {"type":"array","name":"records","label":"Records","description":"Array of record objects to create","required":true}
* @sampleResult [{"objectId":"rec123","name":"John"},{"objectId":"rec124","name":"Jane"}]
*/
}, {
key: "bulkCreateRecords",
value: function bulkCreateRecords(appId, tableName, records) {
return this.req.post(_urls["default"].dataTableBulkCreate(appId, tableName), records);
}
/**
* @aiToolName Bulk Upsert Records
* @category Data
* @description Create or update multiple records at once
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"string","name":"tableName","label":"Table Name","description":"The name of the table","required":true}
* @paramDef {"type":"array","name":"records","label":"Records","description":"Array of record objects to upsert","required":true}
* @sampleResult [{"objectId":"rec123","name":"Updated John"},{"objectId":"rec124","name":"New Jane"}]
*/
}, {
key: "bulkUpsertRecords",
value: function bulkUpsertRecords(appId, tableName, records) {
return this.req.put(_urls["default"].dataTableBulkUpsert(appId, tableName), records);
}
/**
* @typedef {Object} updateRecord__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The name of the table to update record in"}
*/
/**
* @aiToolName Update Record
* @category Data
* @description Update an existing record in a data table
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"updateRecord__table","name":"table","label":"Table Object","description":"Object containing table name","required":true}
* @paramDef {"type":"object","name":"record","label":"Record","description":"The record data to update (must include objectId)","required":true}
* @sampleResult {"coll":"updated_value","created":1757611485750,"name":"Updated Test User","___class":"testTable","ownerId":null,"updated":1757663392976,"email":"updated@example.com","objectId":"SAMPLE-ID-456"}
*/
}, {
key: "updateRecord",
value: function updateRecord(appId, table, record) {
return this.req.put(_urls["default"].dataRecord(appId, table.name, record.objectId), record);
}
}, {
key: "updateImageTypeRecord",
value: function updateImageTypeRecord(appId, table, record) {
return this.req.put("".concat(_urls["default"].dataTable(appId, table.name), "/file/").concat(record.columnName, "/").concat(record.objectId), record.value);
}
/**
* @typedef {Object} deleteRecords__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The name of the table to delete records from"}
* @paramDef {"type":"string","label":"Table ID","name":"tableId","required":true,"description":"The unique identifier of the table (needed for cache management)"}
* @paramDef {"type":"array","label":"Relations","name":"relations","required":false,"description":"Array of relation objects (obtained from get tables method)"}
* @paramDef {"type":"array","label":"Geo Relations","name":"geoRelations","required":false,"description":"Array of geo relation objects (obtained from get tables method)"}
*/
/**
* @aiToolName Delete Records
* @category Data
* @description Delete records from a data table
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"deleteRecords__table","name":"table","label":"Table Object","description":"Full table object with tableId (obtain from tables.get() method)","required":true}
* @paramDef {"type":"array","name":"recordIds","label":"Record IDs","description":"Array of record IDs to delete, or null to delete all","required":false}
* @sampleResult true
*/
}, {
key: "deleteRecords",
value: function deleteRecords(appId, table, recordIds) {
var url = removeRecordsUrl(appId, table, !recordIds);
var removeItems = recordIds && recordIds.map(function (objectId) {
return {
objectId: objectId
};
});
return this.req["delete"](url, removeItems).cacheTags((0, _cacheTags.TABLE_DATA)(table.tableId));
}
/**
* @aiToolName Delete Image Type Record
* @category Data
* @description Delete an image type field from a record
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"string","name":"tableName","label":"Table Name","description":"The name of the table","required":true}
* @paramDef {"type":"string","name":"columnName","label":"Column Name","description":"The name of the image column","required":true}
* @paramDef {"type":"string","name":"recordId","label":"Record ID","description":"The identifier of the record","required":true}
* @sampleResult true
*/
}, {
key: "deleteImageTypeRecord",
value: function deleteImageTypeRecord(appId, tableName, columnName, recordId) {
return this.req["delete"]("".concat(_urls["default"].dataTable(appId, tableName), "/file/").concat(columnName, "/").concat(recordId));
}
/**
* @typedef {Object} updateRelations__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The name of the table containing the relation column"}
* @paramDef {"type":"string","label":"Table ID","name":"tableId","required":true,"description":"The unique identifier of the table"}
* @paramDef {"type":"array","label":"Relations","name":"relations","required":true,"description":"Array of relation objects defining table relationships (obtained from get tables method)"}
* @paramDef {"type":"array","label":"Geo Relations","name":"geoRelations","required":true,"description":"Array of geo relation objects (obtained from get tables method)"}
*/
/**
* @aiToolName Update Relations
* @category Data
* @description Update relations for a record
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"updateRelations__table","name":"table","label":"Table Object","description":"Full table object with relations array (obtain from tables.get() method)","required":true}
* @paramDef {"type":"string","name":"columnName","label":"Column Name","description":"The name of the relation column","required":true}
* @paramDef {"type":"string","name":"recordId","label":"Record ID","description":"The identifier of the record","required":true}
* @paramDef {"type":"array","name":"relationIds","label":"Relation IDs","description":"Array of related record IDs","required":true}
* @sampleResult ""
*/
}, {
key: "updateRelations",
value: function updateRelations(appId, table, columnName, recordId, relationIds) {
var relationColumn = getRelationColumn(table, columnName);
return this.req.put(updateRelationsUrl(appId, table, columnName, recordId), relationIds).cacheTags((0, _cacheTags.TABLE_DATA)(relationColumn.toTableId));
}
/**
* @typedef {Object} removeRelations__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The name of the table containing the relation column"}
* @paramDef {"type":"string","label":"Table ID","name":"tableId","required":true,"description":"The unique identifier of the table"}
* @paramDef {"type":"array","label":"Relations","name":"relations","required":true,"description":"Array of relation objects defining table relationships (obtained from get tables method)"}
* @paramDef {"type":"array","label":"Geo Relations","name":"geoRelations","required":true,"description":"Array of geo relation objects (obtained from get tables method)"}
*/
/**
* @aiToolName Remove Relations
* @category Data
* @description Remove relations from a record
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"removeRelations__table","name":"table","label":"Table Object","description":"Full table object with relations array (obtain from tables.get() method)","required":true}
* @paramDef {"type":"string","name":"columnName","label":"Column Name","description":"The name of the relation column","required":true}
* @paramDef {"type":"string","name":"recordId","label":"Record ID","description":"The identifier of the record","required":true}
* @paramDef {"type":"array","name":"relationIds","label":"Relation IDs","description":"Array of related record IDs to remove","required":true}
* @sampleResult true
*/
}, {
key: "removeRelations",
value: function removeRelations(appId, table, columnName, recordId, relationIds) {
var relationColumn = getRelationColumn(table, columnName);
return this.req["delete"](removeRelationsUrl(appId, table, columnName, recordId), relationIds).cacheTags((0, _cacheTags.TABLE_DATA)(relationColumn.toTableId));
}
}, {
key: "createColumn",
value: function createColumn(appId, table, column) {
var url = tableColumnsUrl(appId, table);
var urlSuffix = COLUMNS_URL_SUFFIX[column.dataType];
return this.req.post(url + (urlSuffix ? "/".concat(urlSuffix) : ''), column).then(function (resp) {
return _objectSpread(_objectSpread({}, resp), {}, {
dataType: column.dataType
});
});
}
/**
* @typedef {Object} deleteColumn__table
* @paramDef {"type":"string","label":"Table Name","name":"name","required":true,"description":"The name of the table containing the column to delete"}
*/
/**
* @typedef {Object} deleteColumn__column
* @paramDef {"type":"string","label":"Column Name","name":"name","required":true,"description":"The name of the column to delete"}
*/
/**
* @aiToolName Delete Column
* @category Data
* @description Delete a column from a data table
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"deleteColumn__table","name":"table","label":"Table Object","description":"Object containing table name","required":true}
* @paramDef {"type":"deleteColumn__column","name":"column","label":"Column Object","description":"Object containing column name to delete","required":true}
* @sampleResult ""
*/
}, {
key: "deleteColumn",
value: function deleteColumn(appId, table, column) {
var path = tableColumnsUrl(appId, table);
var columnName = encodeURI(column.name);
if (isRelType(column.dataType)) {
return this.req["delete"]("".concat(path, "/").concat(RELATION_URL_SUFFIX, "/").concat(columnName));
}
return this.req["delete"]("".concat(path, "/").concat(columnName));
}
}, {
key: "updateColumn",
value: function updateColumn(appId, table, prevColumn, column) {
var urlSuffix = COLUMNS_URL_SUFFIX[prevColumn.dataType] || prevColumn.name;
var url = tableColumnsUrl(appId, table);
return this.req.put("".concat(url, "/").concat(urlSuffix), column).then(function (resp) {
return _objectSpread(_objectSpread({}, resp), {}, {
dataType: resp.dataType || prevColumn.dataType
});
});
}
/**
* @aiToolName Load Configs
* @category Data
* @description Load data configuration settings for an application
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @sampleResult {"dynamicSchema":true,"includeObjectIdByDefault":false}
*/
}, {
key: "loadConfigs",
value: function loadConfigs(appId) {
return this.req.get(_urls["default"].dataConfigs(appId));
}
/**
* @typedef {Object} setConfigs__configs
* @paramDef {"type":"boolean","label":"Dynamic Schema","name":"dynamicSchema","required":false,"description":"Enable or disable dynamic schema for tables"}
* @paramDef {"type":"boolean","label":"Include Object ID By Default","name":"includeObjectIdByDefault","required":false,"description":"Whether to include objectId field in API responses by default"}
*/
/**
* @aiToolName Set Configs
* @category Data
* @description Set data configuration settings for an application
* @paramDef {"type":"string","name":"appId","label":"Application ID","description":"The identifier of the application","required":true}
* @paramDef {"type":"setConfigs__configs","name":"configs","label":"Configurations","description":"The configuration settings to set","required":true}
* @sampleResult {"dynamicSchema":false,"includeObjectIdByDefault":true}
*/
}, {
key: "setConfigs",
value: function setConfigs(appId, configs) {
return this.req.put(_urls["default"].dataConfigs(appId), configs);
}
}, {
key: "loadAssignedUserRoles",
value: function loadAssignedUserRoles(appId, users) {
return this.req.get(assignedUserRoles(appId)).query({
users: users.join(',')
});
}
}, {
key: "updateAssignedUserRoles",
value: function updateAssignedUserRoles(appId, roles, users) {
return this.req.put(assignedUserRoles(appId), {
roles: roles,
users: users
});
}
}, {
key: "loadTableOwnerPolicyDelayCheck",
value: function loadTableOwnerPolicyDelayCheck(appId, tableName) {
return this.req.get(routes.tableOwnerPolicyDelayCheck(appId, tableName));
}
}, {
key: "changeTableOwnerPolicyDelayCheck",
value: function changeTableOwnerPolicyDelayCheck(appId, tableName, data) {
return this.req.put(routes.tableOwnerPolicyDelayCheck(appId, tableName), data);
}
}]);
return Tables;
}(_baseService["default"]);
var _default = exports["default"] = function _default(req) {
return Tables.create(req);
};
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
});
};