shyft
Version:
Model driven GraphQL API framework
622 lines (621 loc) • 35 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.StorageTypePostgres = exports.extendWithFromStateCheck = exports.preMutationPermissionCheckQueryGenerator = exports.transformFilterAttributeName = void 0;
var __1 = require("..");
var storageDataTypes_1 = require("./storageDataTypes");
var dataloader_1 = __importDefault(require("dataloader"));
var util_1 = require("./util");
var filter_1 = require("./filter");
var permission_1 = require("./permission");
var helpers_1 = require("./helpers");
var i18n_1 = require("./i18n");
var processOrmError = function (err, storageInstance, qBuilder, constraints) {
if (String(err.code) === '23505') {
var meta = void 0;
if (constraints) {
var constraintName = err.constraint;
if (constraintName) {
meta = constraints.unique[constraintName];
}
}
throw new __1.CustomError('Uniqueness constraint violated', 'UniqueConstraintError', null, meta);
}
else if (String(err.code) === '23503') {
throw new __1.CustomError('Foreign key not found', 'ForeignKeyConstraintError');
}
else if (String(err.code) === '22P02') {
throw new __1.CustomError(err.message, 'InvalidInputSyntaxError');
}
else if (String(err.code) === '23502') {
throw new __1.CustomError(err.message, 'NotNullConstraintViolationError');
}
else if (String(err.code) === '42703') {
throw new __1.CustomError(err.message, 'UndefinedColumnError');
}
storageInstance.logger.logQueryError(err.message, qBuilder.getSql());
throw new __1.CustomError('Undefined server error', 'UndefinedServerError', 500);
};
var transformFilterAttributeName = function (context, entity, modelRegistry) {
return i18n_1.i18nTransformFilterAttributeName(context, entity, modelRegistry);
};
exports.transformFilterAttributeName = transformFilterAttributeName;
var createDataLoader = function (context, entity, StorageTypePostgres) {
var storageInstance = StorageTypePostgres.getStorageInstance();
var modelRegistry = StorageTypePostgres.getStorageModels();
var manager = storageInstance.manager;
var loader = new dataloader_1.default(function (ids) { return __awaiter(void 0, void 0, void 0, function () {
var entityName, _a, filterShaper, storageTableName, primaryAttributeName, permissionWhere, baseWhere, where, qBuilder, rows, data, err_1;
var _b, _c;
return __generator(this, function (_d) {
switch (_d.label) {
case 0:
entityName = entity.name;
_a = modelRegistry[entityName], filterShaper = _a.filterShaper, storageTableName = _a.storageTableName;
primaryAttributeName = entity.getPrimaryAttribute().name;
return [4 /*yield*/, permission_1.handlePermission(context, entity, permission_1.PERMISSION_TYPES.read)];
case 1:
permissionWhere = _d.sent();
if (permissionWhere) {
permissionWhere = filterShaper(permissionWhere);
}
baseWhere = {
$and: [],
};
if (ids.length === 1) {
baseWhere.$and.push((_b = {},
_b[primaryAttributeName] = ids[0],
_b));
}
else {
baseWhere.$and.push((_c = {},
_c[primaryAttributeName] = {
$in: ids,
},
_c));
}
where = permission_1.applyPermission(baseWhere, permissionWhere);
qBuilder = manager.createQueryBuilder(storageTableName, storageTableName);
filter_1.buildWhereQuery(qBuilder, where, entityName, modelRegistry, true);
_d.label = 2;
case 2:
_d.trys.push([2, 4, , 5]);
return [4 /*yield*/, qBuilder.getMany()];
case 3:
rows = _d.sent();
data = helpers_1.parseValuesMap(entity, rows, modelRegistry[entityName], context);
// reorder results to match requested IDs order
// https://github.com/facebook/dataloader/issues/66
return [2 /*return*/, __1.sortDataByKeys(ids, data, primaryAttributeName)];
case 4:
err_1 = _d.sent();
processOrmError(err_1, storageInstance, qBuilder);
return [3 /*break*/, 5];
case 5: return [2 /*return*/, null];
}
});
}); });
return loader;
};
var buildInstanceNotFoundError = function (id) {
return new __1.CustomError("Instance with ID '" + id + "' not found", 'InstanceNotFound');
};
var buildInstanceNotFoundOrAccessDeniedError = function (id) {
return new __1.CustomError("Instance with ID '" + id + "' not found or access denied", 'InstanceNotFoundOrAccessDenied');
};
var buildMutationDeniedError = function (mutationName) {
return new __1.CustomError("Mutation '" + mutationName + "' denied", 'PermissionError', 403);
};
var preMutationPermissionCheckQueryGenerator = function (StorageTypePostgres, permissionWhere, entityName, modelRegistry) {
var storageInstance = StorageTypePostgres.getStorageInstance();
var manager = storageInstance.manager;
var qBuilder = manager.createQueryBuilder().select().from('');
filter_1.buildWhereQuery(qBuilder, permissionWhere, entityName, modelRegistry);
var _a = qBuilder.getQueryAndParameters(), query = _a[0], queryParams = _a[1];
return [query.replace(/ \* FROM {2}WHERE /, ' ') + " AS found", queryParams];
};
exports.preMutationPermissionCheckQueryGenerator = preMutationPermissionCheckQueryGenerator;
var extendWithFromStateCheck = function (where, entity, entityMutation) {
var fromState = entityMutation.fromState;
var states = entity.getStates();
if (!fromState || !states) {
return;
}
var fromStates = __1.isArray(fromState) ? fromState : [fromState];
var stateIds = fromStates.map(function (stateName) {
return states[stateName];
});
where.$and.push({
state: {
$in: stateIds,
},
});
};
exports.extendWithFromStateCheck = extendWithFromStateCheck;
exports.StorageTypePostgres = new __1.StorageType({
name: 'StorageTypePostgres',
description: 'Postgres database storage type',
findOne: function (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 (entity, args, context) {
return __awaiter(this, void 0, void 0, function () {
var storageInstance, manager, modelRegistry, entityName, loaders, loader, _a, filterShaper, storageTableName, primaryAttributeName, permissionWhere, baseWhere, where, qBuilder, transformFn, result, err_2;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
storageInstance = this.getStorageInstance();
manager = storageInstance.manager;
modelRegistry = this.getStorageModels();
entityName = entity.name;
context.loaders = context.loaders || {};
loaders = context.loaders;
loader = loaders[entityName];
_a = modelRegistry[entityName], filterShaper = _a.filterShaper, storageTableName = _a.storageTableName;
primaryAttributeName = entity.getPrimaryAttribute().name;
if (!loader) {
loader = loaders[entityName] = createDataLoader(context, entity, this);
}
return [4 /*yield*/, permission_1.handlePermission(context, entity, permission_1.PERMISSION_TYPES.find)];
case 1:
permissionWhere = _b.sent();
if (permissionWhere) {
permissionWhere = filterShaper(permissionWhere);
}
baseWhere = {
$and: [args],
};
where = permission_1.applyPermission(baseWhere, permissionWhere);
qBuilder = manager.createQueryBuilder(storageTableName, storageTableName);
transformFn = exports.transformFilterAttributeName(context, entity, modelRegistry);
filter_1.buildWhereQuery(qBuilder, where, entityName, modelRegistry, false, transformFn);
_b.label = 2;
case 2:
_b.trys.push([2, 4, , 5]);
return [4 /*yield*/, qBuilder.getOne()];
case 3:
result = _b.sent();
return [3 /*break*/, 5];
case 4:
err_2 = _b.sent();
processOrmError(err_2, storageInstance, qBuilder);
return [3 /*break*/, 5];
case 5:
if (result) {
loader.prime(result[primaryAttributeName], result);
}
return [2 /*return*/, helpers_1.parseValues(entity, result, modelRegistry[entityName], context)];
}
});
});
},
find: function (entity, args, context, parentConnection) {
return __awaiter(this, void 0, void 0, function () {
var storageInstance, manager, modelRegistry, entityName, _a, dataShaperMap, filterShaper, storageTableName, primaryAttributeName, loaders, loader, reverseOrder, permissionWhere, pageInfo, limit, offset, baseWhere, where, qBuilder, transformFn, result, err_3, orderedResults, data;
var _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
storageInstance = this.getStorageInstance();
manager = storageInstance.manager;
modelRegistry = this.getStorageModels();
entityName = entity.name;
_a = modelRegistry[entityName], dataShaperMap = _a.dataShaperMap, filterShaper = _a.filterShaper, storageTableName = _a.storageTableName;
if (entity.getPrimaryAttribute()) {
primaryAttributeName = entity.getPrimaryAttribute().name;
}
context.loaders = context.loaders || {};
loaders = context.loaders;
loader = loaders[entityName];
reverseOrder = !!args.last;
if (!!args.skipPermissions) return [3 /*break*/, 2];
return [4 /*yield*/, permission_1.handlePermission(context, entity, permission_1.PERMISSION_TYPES.find)];
case 1:
permissionWhere = _c.sent();
if (permissionWhere) {
permissionWhere = filterShaper(permissionWhere);
}
_c.label = 2;
case 2:
pageInfo = {
hasNextPage: false,
hasPreviousPage: false,
};
limit = null;
if (!args.all) {
limit = util_1.getLimit(args.first, args.last);
if (limit === 0) {
// no point in fetching data
return [2 /*return*/, {
data: [],
pageInfo: pageInfo,
}];
}
limit += 1; // ask for 1 more to determine if there is a next page
}
offset = args.offset;
baseWhere = {
$and: [
__assign({}, filter_1.processAndConvertFilter(entity, filterShaper, args, this)),
__assign({}, __1.processCursors(entity, args)),
],
};
where = args.skipPermissions
? baseWhere
: permission_1.applyPermission(baseWhere, permissionWhere);
if (parentConnection) {
where.$and.push((_b = {},
_b[parentConnection.attribute] = parentConnection.id,
_b));
}
qBuilder = manager
.createQueryBuilder(storageTableName, storageTableName)
.offset(offset);
if (limit) {
qBuilder.limit(limit);
}
if (args.orderBy) {
args.orderBy.map(function (_a) {
var attribute = _a.attribute, direction = _a.direction;
if (!dataShaperMap[attribute]) {
throw new __1.CustomError("Unknown sorting attribute: " + attribute, 'UnknownSortingAttributeError');
}
qBuilder.addOrderBy(util_1.quote(dataShaperMap[attribute]), reverseOrder ? util_1.invertDirection(direction) : direction);
});
}
transformFn = exports.transformFilterAttributeName(context, entity, modelRegistry);
filter_1.buildWhereQuery(qBuilder, where, entityName, modelRegistry, true, transformFn);
_c.label = 3;
case 3:
_c.trys.push([3, 5, , 6]);
return [4 /*yield*/, qBuilder.getMany()];
case 4:
result = _c.sent();
return [3 /*break*/, 6];
case 5:
err_3 = _c.sent();
processOrmError(err_3, storageInstance, qBuilder);
return [3 /*break*/, 6];
case 6:
if (entity.getPrimaryAttribute()) {
if (!loader) {
loader = loaders[entityName] = createDataLoader(context, entity, this);
}
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 = helpers_1.parseValuesMap(entity, orderedResults, modelRegistry[entityName], context);
return [2 /*return*/, {
data: data,
pageInfo: pageInfo,
}];
}
});
});
},
count: function (entity, args, context, parentConnection) {
return __awaiter(this, void 0, void 0, function () {
var storageInstance, manager, modelRegistry, entityName, _a, filterShaper, storageTableName, permissionWhere, baseWhere, where, qBuilder, transformFn, result, err_4;
var _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
storageInstance = this.getStorageInstance();
manager = storageInstance.manager;
modelRegistry = this.getStorageModels();
entityName = entity.name;
_a = modelRegistry[entityName], filterShaper = _a.filterShaper, storageTableName = _a.storageTableName;
return [4 /*yield*/, permission_1.handlePermission(context, entity, permission_1.PERMISSION_TYPES.find)];
case 1:
permissionWhere = _c.sent();
if (permissionWhere) {
permissionWhere = filterShaper(permissionWhere);
}
baseWhere = {
$and: [
__assign({}, filter_1.processAndConvertFilter(entity, filterShaper, args, this)),
],
};
where = permission_1.applyPermission(baseWhere, permissionWhere);
if (parentConnection) {
where.$and.push((_b = {},
_b[parentConnection.attribute] = parentConnection.id,
_b));
}
qBuilder = manager
.createQueryBuilder(storageTableName, storageTableName)
.select('COUNT(*)');
transformFn = exports.transformFilterAttributeName(context, entity, modelRegistry);
filter_1.buildWhereQuery(qBuilder, where, entityName, modelRegistry, true, transformFn);
_c.label = 2;
case 2:
_c.trys.push([2, 4, , 5]);
return [4 /*yield*/, qBuilder.getRawOne()];
case 3:
result = _c.sent();
return [3 /*break*/, 5];
case 4:
err_4 = _c.sent();
processOrmError(err_4, storageInstance, qBuilder);
return [3 /*break*/, 5];
case 5: return [2 /*return*/, parseInt(result.count, 10)];
}
});
});
},
mutate: function (entity, id, args, entityMutation, context) {
return __awaiter(this, void 0, void 0, function () {
var entityName, modelRegistry, storageInstance, _a, dataShaper, dataShaperMap, filterShaper, storageTableName, constraints, primaryAttributeName, data, knownAttributes_1, manager, permissionWhere, result, _b, query, queryParams, preMutationPermissionCheck, qBuilder, err_5, result, baseWhere, where, i18nSerialized_1, qBuilder, err_6, rowCount, result, baseWhere, where, qBuilder, err_7, rowCount;
var _c, _d, _e;
return __generator(this, function (_f) {
switch (_f.label) {
case 0:
if (!entityMutation) {
throw new __1.CustomError('Invalid mutation', 'InvalidMutationError');
}
entityName = entity.name;
modelRegistry = this.getStorageModels();
storageInstance = this.getStorageInstance();
_a = modelRegistry[entityName], dataShaper = _a.dataShaper, dataShaperMap = _a.dataShaperMap, filterShaper = _a.filterShaper, storageTableName = _a.storageTableName, constraints = _a.constraints;
primaryAttributeName = entity.getPrimaryAttribute().name;
data = entityMutation.type !== __1.MUTATION_TYPE_DELETE
? helpers_1.serializeValues(entity, entityMutation, args, modelRegistry[entityName], context)
: null;
if (data) {
__1.deleteUndefinedProps(data);
knownAttributes_1 = Object.keys(dataShaperMap);
Object.keys(data).forEach(function (key) { return !knownAttributes_1.includes(key) && delete data[key]; });
}
manager = storageInstance.manager;
return [4 /*yield*/, permission_1.handlePermission(context, entity, permission_1.PERMISSION_TYPES.mutation, entityMutation, data)];
case 1:
permissionWhere = _f.sent();
if (permissionWhere) {
permissionWhere = filterShaper(permissionWhere);
}
if (!(entityMutation.type === __1.MUTATION_TYPE_CREATE)) return [3 /*break*/, 8];
result = void 0;
if (!(permissionWhere && permissionWhere.$or)) return [3 /*break*/, 3];
_b = exports.preMutationPermissionCheckQueryGenerator(this, permissionWhere, entityName, modelRegistry), query = _b[0], queryParams = _b[1];
return [4 /*yield*/, manager.query(query, queryParams)];
case 2:
preMutationPermissionCheck = _f.sent();
if (!preMutationPermissionCheck[0].found) {
throw buildMutationDeniedError(entityMutation.name);
}
_f.label = 3;
case 3:
qBuilder = manager
.createQueryBuilder()
.insert()
.into(storageTableName)
.values(data)
.returning('*');
_f.label = 4;
case 4:
_f.trys.push([4, 6, , 7]);
return [4 /*yield*/, qBuilder.execute()];
case 5:
result = _f.sent();
return [3 /*break*/, 7];
case 6:
err_5 = _f.sent();
processOrmError(err_5, storageInstance, qBuilder, constraints);
return [3 /*break*/, 7];
case 7: return [2 /*return*/, helpers_1.parseValues(entity, dataShaper(result.raw[0]), modelRegistry[entityName], context)];
case 8:
if (!(entityMutation.type === __1.MUTATION_TYPE_UPDATE)) return [3 /*break*/, 13];
result = void 0;
baseWhere = {
$and: [
(_c = {},
_c[primaryAttributeName] = id,
_c),
],
};
exports.extendWithFromStateCheck(baseWhere, entity, entityMutation);
where = permission_1.applyPermission(baseWhere, permissionWhere);
if (__1.isMap(data.i18n, true)) {
i18nSerialized_1 = JSON.stringify(data.i18n).replace(/'/g, "''");
data.i18n = function () { return "merge_translations(i18n, '" + i18nSerialized_1 + "')"; };
}
else {
delete data.i18n;
}
qBuilder = manager
.createQueryBuilder()
.update(storageTableName)
.set(data)
.returning('*');
filter_1.buildWhereQuery(qBuilder, where, entityName, modelRegistry);
_f.label = 9;
case 9:
_f.trys.push([9, 11, , 12]);
return [4 /*yield*/, qBuilder.execute()];
case 10:
result = _f.sent();
return [3 /*break*/, 12];
case 11:
err_6 = _f.sent();
processOrmError(err_6, storageInstance, qBuilder, constraints);
return [3 /*break*/, 12];
case 12:
rowCount = result.raw.length;
if (rowCount < 1) {
if (permissionWhere) {
throw buildInstanceNotFoundOrAccessDeniedError(id);
}
throw buildInstanceNotFoundError(id);
}
return [2 /*return*/, helpers_1.parseValues(entity, dataShaper(result.raw[0]), modelRegistry[entityName], context)];
case 13:
if (!(entityMutation.type === __1.MUTATION_TYPE_DELETE)) return [3 /*break*/, 18];
result = void 0;
baseWhere = {
$and: [
(_d = {},
_d[primaryAttributeName] = id,
_d),
],
};
exports.extendWithFromStateCheck(baseWhere, entity, entityMutation);
where = permission_1.applyPermission(baseWhere, permissionWhere);
qBuilder = manager
.createQueryBuilder()
.delete()
.from(storageTableName)
.returning('*');
filter_1.buildWhereQuery(qBuilder, where, entityName, modelRegistry);
_f.label = 14;
case 14:
_f.trys.push([14, 16, , 17]);
return [4 /*yield*/, qBuilder.execute()];
case 15:
result = _f.sent();
return [3 /*break*/, 17];
case 16:
err_7 = _f.sent();
processOrmError(err_7, storageInstance, qBuilder, constraints);
return [3 /*break*/, 17];
case 17:
rowCount = result.raw.length;
if (rowCount < 1) {
if (permissionWhere) {
throw buildInstanceNotFoundOrAccessDeniedError(id);
}
throw buildInstanceNotFoundError(id);
}
return [2 /*return*/, (_e = {
deleteRowCount: rowCount
},
_e[primaryAttributeName] = id,
_e.rows = result.raw.map(dataShaper),
_e)];
case 18: return [2 /*return*/, null];
}
});
});
},
checkLookupPermission: function (entity, filter) {
return __awaiter(this, void 0, void 0, function () {
var storageInstance, manager, modelRegistry, entityName, _a, filterShaper, storageTableName, permissionWhere, qBuilder, result, err_8;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
storageInstance = this.getStorageInstance();
manager = storageInstance.manager;
modelRegistry = this.getStorageModels();
entityName = entity.name;
_a = modelRegistry[entityName], filterShaper = _a.filterShaper, storageTableName = _a.storageTableName;
permissionWhere = filterShaper(filter);
qBuilder = manager
.createQueryBuilder(storageTableName, storageTableName)
.select('COUNT(*) > 0 AS found');
filter_1.buildWhereQuery(qBuilder, permissionWhere, entityName, modelRegistry, true);
_b.label = 1;
case 1:
_b.trys.push([1, 3, , 4]);
return [4 /*yield*/, qBuilder.getRawOne()];
case 2:
result = _b.sent();
return [3 /*break*/, 4];
case 3:
err_8 = _b.sent();
processOrmError(err_8, storageInstance, qBuilder);
return [3 /*break*/, 4];
case 4: return [2 /*return*/, result.found];
}
});
});
},
});
exports.default = exports.StorageTypePostgres;
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeID, storageDataTypes_1.StorageDataTypeBigInt);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeInteger, storageDataTypes_1.StorageDataTypeInteger);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeBigInt, storageDataTypes_1.StorageDataTypeBigInt);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeFloat, storageDataTypes_1.StorageDataTypeNumeric);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeDouble, storageDataTypes_1.StorageDataTypeDouble);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeBoolean, storageDataTypes_1.StorageDataTypeBoolean);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeString, storageDataTypes_1.StorageDataTypeText);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeJson, storageDataTypes_1.StorageDataTypeJSON);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeTimestamp, storageDataTypes_1.StorageDataTypeTimestamp);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeTimestampTz, storageDataTypes_1.StorageDataTypeTimestampTz);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeDate, storageDataTypes_1.StorageDataTypeDate);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeTime, storageDataTypes_1.StorageDataTypeTime);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeTimeTz, storageDataTypes_1.StorageDataTypeTimeTz);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeUUID, storageDataTypes_1.StorageDataTypeUUID);
exports.StorageTypePostgres.addDataTypeMap(__1.DataTypeI18n, storageDataTypes_1.StorageDataTypeI18n);
exports.StorageTypePostgres.addDynamicDataTypeMap(__1.isDataTypeEnum, storageDataTypes_1.StorageDataTypeInteger);
exports.StorageTypePostgres.addDynamicDataTypeMap(__1.isDataTypeState, storageDataTypes_1.StorageDataTypeInteger);
exports.StorageTypePostgres.addDynamicDataTypeMap(__1.isObjectDataType, storageDataTypes_1.StorageDataTypeJSON);
exports.StorageTypePostgres.addDynamicDataTypeMap(__1.isListDataType, storageDataTypes_1.StorageDataTypeJSON);