shyft-storage-connector
Version:
Storage connector for Shyft
763 lines (612 loc) • 32.5 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.StorageTypePostgres = exports.extendWithFromStateCheck = exports.preMutationPermissionCheckQueryGenerator = exports.transformFilterAttributeName = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _shyft = require("shyft");
var _storageDataTypes = require("./storageDataTypes");
var _dataloader = _interopRequireDefault(require("dataloader"));
var _util = require("./util");
var _filter = require("./filter");
var _permission = require("./permission");
var _helpers = require("./helpers");
var _i18n = require("./i18n");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
var processOrmError = function processOrmError(err, storageInstance, qBuilder, constraints) {
if (String(err.code) === '23505') {
var meta;
if (constraints) {
var constraintName = err.constraint;
if (constraintName) {
meta = constraints.unique[constraintName];
}
}
throw new _shyft.CustomError('Uniqueness constraint violated', 'UniqueConstraintError', null, meta);
} else if (String(err.code) === '23503') {
throw new _shyft.CustomError('Foreign key not found', 'ForeignKeyConstraintError');
} else if (String(err.code) === '22P02') {
throw new _shyft.CustomError(err.message, 'InvalidInputSyntaxError');
} else if (String(err.code) === '23502') {
throw new _shyft.CustomError(err.message, 'NotNullConstraintViolationError');
} else if (String(err.code) === '42703') {
throw new _shyft.CustomError(err.message, 'UndefinedColumnError');
}
storageInstance.logger.logQueryError(err.message, qBuilder.getSql());
throw new _shyft.CustomError('Undefined server error', 'UndefinedServerError', 500);
};
var transformFilterAttributeName = function transformFilterAttributeName(context, entity, modelRegistry) {
return (0, _i18n.i18nTransformFilterAttributeName)(context, entity, modelRegistry);
};
exports.transformFilterAttributeName = transformFilterAttributeName;
var createDataLoader = function createDataLoader(context, entity, StorageTypePostgres) {
var storageInstance = StorageTypePostgres.getStorageInstance();
var modelRegistry = StorageTypePostgres.getStorageModels();
var manager = storageInstance.manager;
var loader = new _dataloader["default"]( /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(ids) {
var entityName, _modelRegistry$entity, filterShaper, storageTableName, _entity$getPrimaryAtt, primaryAttributeName, permissionWhere, baseWhere, where, qBuilder, rows, data;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
entityName = entity.name;
_modelRegistry$entity = modelRegistry[entityName], filterShaper = _modelRegistry$entity.filterShaper, storageTableName = _modelRegistry$entity.storageTableName;
_entity$getPrimaryAtt = entity.getPrimaryAttribute(), primaryAttributeName = _entity$getPrimaryAtt.name;
_context.next = 5;
return (0, _permission.handlePermission)(context, entity, _permission.PERMISSION_TYPES.read);
case 5:
permissionWhere = _context.sent;
if (permissionWhere) {
permissionWhere = filterShaper(permissionWhere);
}
baseWhere = {
$and: []
};
if (ids.length === 1) {
baseWhere.$and.push((0, _defineProperty2["default"])({}, primaryAttributeName, ids[0]));
} else {
baseWhere.$and.push((0, _defineProperty2["default"])({}, primaryAttributeName, {
$in: ids
}));
}
where = (0, _permission.applyPermission)(baseWhere, permissionWhere);
qBuilder = manager.createQueryBuilder(storageTableName, storageTableName);
(0, _filter.buildWhereQuery)(qBuilder, where, entityName, modelRegistry, true);
_context.prev = 12;
_context.next = 15;
return qBuilder.getMany();
case 15:
rows = _context.sent;
data = (0, _helpers.parseValuesMap)(entity, rows, modelRegistry[entityName], context); // reorder results to match requested IDs order
// https://github.com/facebook/dataloader/issues/66
return _context.abrupt("return", (0, _shyft.sortDataByKeys)(ids, data, primaryAttributeName));
case 20:
_context.prev = 20;
_context.t0 = _context["catch"](12);
processOrmError(_context.t0, storageInstance, qBuilder);
case 23:
return _context.abrupt("return", null);
case 24:
case "end":
return _context.stop();
}
}
}, _callee, null, [[12, 20]]);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}());
return loader;
};
var buildInstanceNotFoundError = function buildInstanceNotFoundError(id) {
return new _shyft.CustomError("Instance with ID '".concat(id, "' not found"), 'InstanceNotFound');
};
var buildInstanceNotFoundOrAccessDeniedError = function buildInstanceNotFoundOrAccessDeniedError(id) {
return new _shyft.CustomError("Instance with ID '".concat(id, "' not found or access denied"), 'InstanceNotFoundOrAccessDenied');
};
var buildMutationDeniedError = function buildMutationDeniedError(mutationName) {
return new _shyft.CustomError("Mutation '".concat(mutationName, "' denied"), 'PermissionError', 403);
};
var preMutationPermissionCheckQueryGenerator = function preMutationPermissionCheckQueryGenerator(StorageTypePostgres, permissionWhere, entityName, modelRegistry) {
var storageInstance = StorageTypePostgres.getStorageInstance();
var manager = storageInstance.manager;
var qBuilder = manager.createQueryBuilder().select().from('');
(0, _filter.buildWhereQuery)(qBuilder, permissionWhere, entityName, modelRegistry);
var _qBuilder$getQueryAnd = qBuilder.getQueryAndParameters(),
_qBuilder$getQueryAnd2 = (0, _slicedToArray2["default"])(_qBuilder$getQueryAnd, 2),
query = _qBuilder$getQueryAnd2[0],
queryParams = _qBuilder$getQueryAnd2[1];
return [query.replace(/ \* FROM WHERE /, ' ') + ' AS found', queryParams];
};
exports.preMutationPermissionCheckQueryGenerator = preMutationPermissionCheckQueryGenerator;
var extendWithFromStateCheck = function extendWithFromStateCheck(where, entity, entityMutation) {
var fromState = entityMutation.fromState;
var states = entity.getStates();
if (!fromState || !states) {
return;
}
var fromStates = (0, _shyft.isArray)(fromState) ? fromState : [fromState];
var stateIds = fromStates.map(function (stateName) {
return states[stateName];
});
where.$and.push({
state: {
$in: stateIds
}
});
};
exports.extendWithFromStateCheck = extendWithFromStateCheck;
var StorageTypePostgres = new _shyft.StorageType({
name: 'StorageTypePostgres',
description: 'Postgres database storage type',
findOne: function findOne(entity, id, args, context) {
var entityName = entity.name;
context.loaders = context.loaders || {};
var loaders = context.loaders;
var loader = loaders[entityName];
if (!loader) {
loader = loaders[entityName] = createDataLoader(context, entity, this);
}
return loader.load(id);
},
findOneByValues: function findOneByValues(entity, args, context) {
var _this = this;
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
var storageInstance, manager, modelRegistry, entityName, loaders, loader, _modelRegistry$entity2, filterShaper, storageTableName, _entity$getPrimaryAtt2, primaryAttributeName, permissionWhere, baseWhere, where, qBuilder, transformFn, result;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
storageInstance = _this.getStorageInstance();
manager = storageInstance.manager;
modelRegistry = _this.getStorageModels();
entityName = entity.name;
context.loaders = context.loaders || {};
loaders = context.loaders;
loader = loaders[entityName];
_modelRegistry$entity2 = modelRegistry[entityName], filterShaper = _modelRegistry$entity2.filterShaper, storageTableName = _modelRegistry$entity2.storageTableName;
_entity$getPrimaryAtt2 = entity.getPrimaryAttribute(), primaryAttributeName = _entity$getPrimaryAtt2.name;
if (!loader) {
loader = loaders[entityName] = createDataLoader(context, entity, _this);
}
_context2.next = 12;
return (0, _permission.handlePermission)(context, entity, _permission.PERMISSION_TYPES.find);
case 12:
permissionWhere = _context2.sent;
if (permissionWhere) {
permissionWhere = filterShaper(permissionWhere);
}
baseWhere = {
$and: [args]
};
where = (0, _permission.applyPermission)(baseWhere, permissionWhere);
qBuilder = manager.createQueryBuilder(storageTableName, storageTableName);
transformFn = transformFilterAttributeName(context, entity, modelRegistry);
(0, _filter.buildWhereQuery)(qBuilder, where, entityName, modelRegistry, false, transformFn);
_context2.prev = 19;
_context2.next = 22;
return qBuilder.getOne();
case 22:
result = _context2.sent;
_context2.next = 28;
break;
case 25:
_context2.prev = 25;
_context2.t0 = _context2["catch"](19);
processOrmError(_context2.t0, storageInstance, qBuilder);
case 28:
if (result) {
loader.prime(result[primaryAttributeName], result);
}
return _context2.abrupt("return", (0, _helpers.parseValues)(entity, result, modelRegistry[entityName], context));
case 30:
case "end":
return _context2.stop();
}
}
}, _callee2, null, [[19, 25]]);
}))();
},
find: function find(entity, args, context, parentConnection) {
var _this2 = this;
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
var storageInstance, manager, modelRegistry, entityName, _modelRegistry$entity3, dataShaperMap, filterShaper, storageTableName, primaryAttributeName, loaders, loader, reverseOrder, permissionWhere, pageInfo, limit, offset, baseWhere, where, qBuilder, transformFn, result, orderedResults, data;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
storageInstance = _this2.getStorageInstance();
manager = storageInstance.manager;
modelRegistry = _this2.getStorageModels();
entityName = entity.name;
_modelRegistry$entity3 = modelRegistry[entityName], dataShaperMap = _modelRegistry$entity3.dataShaperMap, filterShaper = _modelRegistry$entity3.filterShaper, storageTableName = _modelRegistry$entity3.storageTableName;
if (entity.getPrimaryAttribute()) {
primaryAttributeName = entity.getPrimaryAttribute().name;
}
context.loaders = context.loaders || {};
loaders = context.loaders;
loader = loaders[entityName];
reverseOrder = !!args.last;
if (args.skipPermissions) {
_context3.next = 15;
break;
}
_context3.next = 13;
return (0, _permission.handlePermission)(context, entity, _permission.PERMISSION_TYPES.find);
case 13:
permissionWhere = _context3.sent;
if (permissionWhere) {
permissionWhere = filterShaper(permissionWhere);
}
case 15:
pageInfo = {
hasNextPage: false,
hasPreviousPage: false
};
limit = null;
if (args.all) {
_context3.next = 22;
break;
}
limit = (0, _util.getLimit)(args.first, args.last);
if (!(limit === 0)) {
_context3.next = 21;
break;
}
return _context3.abrupt("return", {
data: [],
pageInfo: pageInfo
});
case 21:
limit += 1; // ask for 1 more to determine if there is a next page
case 22:
offset = args.offset;
baseWhere = {
$and: [_objectSpread({}, (0, _filter.processAndConvertFilter)(entity, filterShaper, args, _this2)), _objectSpread({}, (0, _shyft.processCursors)(entity, args))]
};
where = args.skipPermissions ? baseWhere : (0, _permission.applyPermission)(baseWhere, permissionWhere);
if (parentConnection) {
where.$and.push((0, _defineProperty2["default"])({}, parentConnection.attribute, parentConnection.id));
}
qBuilder = manager.createQueryBuilder(storageTableName, storageTableName).offset(offset);
if (limit) {
qBuilder.limit(limit);
}
if (args.orderBy) {
args.orderBy.map(function (_ref2) {
var attribute = _ref2.attribute,
direction = _ref2.direction;
if (!dataShaperMap[attribute]) {
throw new _shyft.CustomError("Unknown sorting attribute: ".concat(attribute), 'UnknownSortingAttributeError');
}
qBuilder.addOrderBy((0, _util.quote)(dataShaperMap[attribute]), reverseOrder ? (0, _util.invertDirection)(direction) : direction);
});
}
transformFn = transformFilterAttributeName(context, entity, modelRegistry);
(0, _filter.buildWhereQuery)(qBuilder, where, entityName, modelRegistry, true, transformFn);
_context3.prev = 31;
_context3.next = 34;
return qBuilder.getMany();
case 34:
result = _context3.sent;
_context3.next = 40;
break;
case 37:
_context3.prev = 37;
_context3.t0 = _context3["catch"](31);
processOrmError(_context3.t0, storageInstance, qBuilder);
case 40:
if (entity.getPrimaryAttribute()) {
if (!loader) {
loader = loaders[entityName] = createDataLoader(context, entity, _this2);
}
result.map(function (row) {
loader.prime(row[primaryAttributeName], row);
});
}
if (limit) {
// remove the 1 extra row if it exists
if (result.length >= limit) {
result = result.slice(0, limit - 1);
if (reverseOrder) {
pageInfo.hasPreviousPage = true;
} else {
pageInfo.hasNextPage = true;
}
}
}
orderedResults = reverseOrder ? result.reverse() : result;
data = (0, _helpers.parseValuesMap)(entity, orderedResults, modelRegistry[entityName], context);
return _context3.abrupt("return", {
data: data,
pageInfo: pageInfo
});
case 45:
case "end":
return _context3.stop();
}
}
}, _callee3, null, [[31, 37]]);
}))();
},
count: function count(entity, args, context, parentConnection) {
var _this3 = this;
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
var storageInstance, manager, modelRegistry, entityName, _modelRegistry$entity4, filterShaper, storageTableName, permissionWhere, baseWhere, where, qBuilder, transformFn, result;
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
storageInstance = _this3.getStorageInstance();
manager = storageInstance.manager;
modelRegistry = _this3.getStorageModels();
entityName = entity.name;
_modelRegistry$entity4 = modelRegistry[entityName], filterShaper = _modelRegistry$entity4.filterShaper, storageTableName = _modelRegistry$entity4.storageTableName;
_context4.next = 7;
return (0, _permission.handlePermission)(context, entity, _permission.PERMISSION_TYPES.find);
case 7:
permissionWhere = _context4.sent;
if (permissionWhere) {
permissionWhere = filterShaper(permissionWhere);
}
baseWhere = {
$and: [_objectSpread({}, (0, _filter.processAndConvertFilter)(entity, filterShaper, args, _this3, context))]
};
where = (0, _permission.applyPermission)(baseWhere, permissionWhere);
if (parentConnection) {
where.$and.push((0, _defineProperty2["default"])({}, parentConnection.attribute, parentConnection.id));
}
qBuilder = manager.createQueryBuilder(storageTableName, storageTableName).select('COUNT(*)');
transformFn = transformFilterAttributeName(context, entity, modelRegistry);
(0, _filter.buildWhereQuery)(qBuilder, where, entityName, modelRegistry, true, transformFn);
_context4.prev = 15;
_context4.next = 18;
return qBuilder.getRawOne();
case 18:
result = _context4.sent;
_context4.next = 24;
break;
case 21:
_context4.prev = 21;
_context4.t0 = _context4["catch"](15);
processOrmError(_context4.t0, storageInstance, qBuilder);
case 24:
return _context4.abrupt("return", parseInt(result.count, 10));
case 25:
case "end":
return _context4.stop();
}
}
}, _callee4, null, [[15, 21]]);
}))();
},
mutate: function mutate(entity, id, args, entityMutation, context) {
var _this4 = this;
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
var entityName, modelRegistry, storageInstance, _modelRegistry$entity5, dataShaper, dataShaperMap, filterShaper, storageTableName, constraints, _entity$getPrimaryAtt3, primaryAttributeName, data, knownAttributes, manager, permissionWhere, result, _preMutationPermissio, _preMutationPermissio2, query, queryParams, preMutationPermissionCheck, qBuilder, _result, baseWhere, where, i18nSerialized, _qBuilder, rowCount, _ref5, _result2, _baseWhere, _where, _qBuilder2, _rowCount;
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
if (entityMutation) {
_context5.next = 2;
break;
}
throw new _shyft.CustomError('Invalid mutation', 'InvalidMutationError');
case 2:
entityName = entity.name;
modelRegistry = _this4.getStorageModels();
storageInstance = _this4.getStorageInstance();
_modelRegistry$entity5 = modelRegistry[entityName], dataShaper = _modelRegistry$entity5.dataShaper, dataShaperMap = _modelRegistry$entity5.dataShaperMap, filterShaper = _modelRegistry$entity5.filterShaper, storageTableName = _modelRegistry$entity5.storageTableName, constraints = _modelRegistry$entity5.constraints;
_entity$getPrimaryAtt3 = entity.getPrimaryAttribute(), primaryAttributeName = _entity$getPrimaryAtt3.name;
data = entityMutation.type !== _shyft.MUTATION_TYPE_DELETE ? (0, _helpers.serializeValues)(entity, entityMutation, args, modelRegistry[entityName], context) : null;
if (data) {
(0, _shyft.deleteUndefinedProps)(data);
knownAttributes = Object.keys(dataShaperMap);
Object.keys(data).forEach(function (key) {
return !knownAttributes.includes(key) && delete data[key];
});
}
manager = storageInstance.manager;
_context5.next = 12;
return (0, _permission.handlePermission)(context, entity, _permission.PERMISSION_TYPES.mutation, entityMutation, data);
case 12:
permissionWhere = _context5.sent;
if (permissionWhere) {
permissionWhere = filterShaper(permissionWhere);
}
if (!(entityMutation.type === _shyft.MUTATION_TYPE_CREATE)) {
_context5.next = 35;
break;
}
if (!(permissionWhere && permissionWhere.$or)) {
_context5.next = 22;
break;
}
_preMutationPermissio = preMutationPermissionCheckQueryGenerator(_this4, permissionWhere, entityName, modelRegistry), _preMutationPermissio2 = (0, _slicedToArray2["default"])(_preMutationPermissio, 2), query = _preMutationPermissio2[0], queryParams = _preMutationPermissio2[1];
_context5.next = 19;
return manager.query(query, queryParams);
case 19:
preMutationPermissionCheck = _context5.sent;
if (preMutationPermissionCheck[0].found) {
_context5.next = 22;
break;
}
throw buildMutationDeniedError(entityMutation.name);
case 22:
qBuilder = manager.createQueryBuilder().insert().into(storageTableName).values(data).returning('*');
_context5.prev = 23;
_context5.next = 26;
return qBuilder.execute();
case 26:
result = _context5.sent;
_context5.next = 32;
break;
case 29:
_context5.prev = 29;
_context5.t0 = _context5["catch"](23);
processOrmError(_context5.t0, storageInstance, qBuilder, constraints);
case 32:
return _context5.abrupt("return", (0, _helpers.parseValues)(entity, dataShaper(result.raw[0]), modelRegistry[entityName], context));
case 35:
if (!(entityMutation.type === _shyft.MUTATION_TYPE_UPDATE)) {
_context5.next = 59;
break;
}
baseWhere = {
$and: [(0, _defineProperty2["default"])({}, primaryAttributeName, id)]
};
extendWithFromStateCheck(baseWhere, entity, entityMutation);
where = (0, _permission.applyPermission)(baseWhere, permissionWhere);
if ((0, _shyft.isMap)(data.i18n, true)) {
i18nSerialized = JSON.stringify(data.i18n).replace(/\'/g, "''");
data.i18n = function () {
return "merge_translations(i18n, '".concat(i18nSerialized, "')");
};
} else {
delete data.i18n;
}
_qBuilder = manager.createQueryBuilder().update(storageTableName).set(data).returning('*');
(0, _filter.buildWhereQuery)(_qBuilder, where, entityName, modelRegistry);
_context5.prev = 42;
_context5.next = 45;
return _qBuilder.execute();
case 45:
_result = _context5.sent;
_context5.next = 51;
break;
case 48:
_context5.prev = 48;
_context5.t1 = _context5["catch"](42);
processOrmError(_context5.t1, storageInstance, _qBuilder, constraints);
case 51:
rowCount = _result.raw.length;
if (!(rowCount < 1)) {
_context5.next = 56;
break;
}
if (!permissionWhere) {
_context5.next = 55;
break;
}
throw buildInstanceNotFoundOrAccessDeniedError(id);
case 55:
throw buildInstanceNotFoundError(id);
case 56:
return _context5.abrupt("return", (0, _helpers.parseValues)(entity, dataShaper(_result.raw[0]), modelRegistry[entityName], context));
case 59:
if (!(entityMutation.type === _shyft.MUTATION_TYPE_DELETE)) {
_context5.next = 80;
break;
}
_baseWhere = {
$and: [(0, _defineProperty2["default"])({}, primaryAttributeName, id)]
};
extendWithFromStateCheck(_baseWhere, entity, entityMutation);
_where = (0, _permission.applyPermission)(_baseWhere, permissionWhere);
_qBuilder2 = manager.createQueryBuilder()["delete"]().from(storageTableName).returning('*');
(0, _filter.buildWhereQuery)(_qBuilder2, _where, entityName, modelRegistry);
_context5.prev = 65;
_context5.next = 68;
return _qBuilder2.execute();
case 68:
_result2 = _context5.sent;
_context5.next = 74;
break;
case 71:
_context5.prev = 71;
_context5.t2 = _context5["catch"](65);
processOrmError(_context5.t2, storageInstance, _qBuilder2, constraints);
case 74:
_rowCount = _result2.raw.length;
if (!(_rowCount < 1)) {
_context5.next = 79;
break;
}
if (!permissionWhere) {
_context5.next = 78;
break;
}
throw buildInstanceNotFoundOrAccessDeniedError(id);
case 78:
throw buildInstanceNotFoundError(id);
case 79:
return _context5.abrupt("return", (_ref5 = {
deleteRowCount: _rowCount
}, (0, _defineProperty2["default"])(_ref5, primaryAttributeName, id), (0, _defineProperty2["default"])(_ref5, "rows", _result2.raw.map(dataShaper)), _ref5));
case 80:
return _context5.abrupt("return", null);
case 81:
case "end":
return _context5.stop();
}
}
}, _callee5, null, [[23, 29], [42, 48], [65, 71]]);
}))();
},
checkLookupPermission: function checkLookupPermission(entity, filter) {
var _this5 = this;
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
var storageInstance, manager, modelRegistry, entityName, _modelRegistry$entity6, filterShaper, storageTableName, permissionWhere, qBuilder, result;
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
storageInstance = _this5.getStorageInstance();
manager = storageInstance.manager;
modelRegistry = _this5.getStorageModels();
entityName = entity.name;
_modelRegistry$entity6 = modelRegistry[entityName], filterShaper = _modelRegistry$entity6.filterShaper, storageTableName = _modelRegistry$entity6.storageTableName;
permissionWhere = filterShaper(filter);
qBuilder = manager.createQueryBuilder(storageTableName, storageTableName).select('COUNT(*) > 0 AS found');
(0, _filter.buildWhereQuery)(qBuilder, permissionWhere, entityName, modelRegistry, true);
_context6.prev = 8;
_context6.next = 11;
return qBuilder.getRawOne();
case 11:
result = _context6.sent;
_context6.next = 17;
break;
case 14:
_context6.prev = 14;
_context6.t0 = _context6["catch"](8);
processOrmError(_context6.t0, storageInstance, qBuilder);
case 17:
return _context6.abrupt("return", result.found);
case 18:
case "end":
return _context6.stop();
}
}
}, _callee6, null, [[8, 14]]);
}))();
}
});
exports.StorageTypePostgres = StorageTypePostgres;
var _default = StorageTypePostgres;
exports["default"] = _default;
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeID, _storageDataTypes.StorageDataTypeBigInt);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeInteger, _storageDataTypes.StorageDataTypeInteger);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeBigInt, _storageDataTypes.StorageDataTypeBigInt);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeFloat, _storageDataTypes.StorageDataTypeNumeric);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeBoolean, _storageDataTypes.StorageDataTypeBoolean);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeString, _storageDataTypes.StorageDataTypeText);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeJson, _storageDataTypes.StorageDataTypeJSON);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeTimestamp, _storageDataTypes.StorageDataTypeTimestamp);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeTimestampTz, _storageDataTypes.StorageDataTypeTimestampTz);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeDate, _storageDataTypes.StorageDataTypeDate);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeTime, _storageDataTypes.StorageDataTypeTime);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeTimeTz, _storageDataTypes.StorageDataTypeTimeTz);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeUUID, _storageDataTypes.StorageDataTypeUUID);
StorageTypePostgres.addDataTypeMap(_shyft.DataTypeI18n, _storageDataTypes.StorageDataTypeI18n);
StorageTypePostgres.addDynamicDataTypeMap(_shyft.isDataTypeEnum, _storageDataTypes.StorageDataTypeInteger);
StorageTypePostgres.addDynamicDataTypeMap(_shyft.isDataTypeState, _storageDataTypes.StorageDataTypeInteger);
StorageTypePostgres.addDynamicDataTypeMap(_shyft.isObjectDataType, _storageDataTypes.StorageDataTypeJSON);
StorageTypePostgres.addDynamicDataTypeMap(_shyft.isListDataType, _storageDataTypes.StorageDataTypeJSON);