@unly/ra-data-graphql-prisma
Version:
A react-admin data provider for Prisma Server
76 lines • 3.66 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 __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var graphql_1 = require("graphql");
var ra_core_1 = require("ra-core");
var getFinalType_1 = __importDefault(require("./utils/getFinalType"));
var sanitizeResource = function (introspectionResults, resource, fieldAliasResolver) { return function (record) {
return Object.keys(record).reduce(function (acc, fieldName) {
var _a, _b, _c, _d;
if (fieldName.startsWith('_')) {
return acc;
}
var field = resource.type.fields.find(function (field) {
return field.name === fieldName;
});
if (typeof field === 'undefined' && fieldAliasResolver) {
var fieldAlias = resource.type.fields.find(function (field) {
return field.name === fieldAliasResolver(field, fieldName, acc, introspectionResults);
});
if (fieldAlias) {
field = __assign(__assign({}, fieldAlias), { name: fieldName });
}
}
if (typeof field === 'undefined') {
console.error("Field \"" + fieldName + "\" couldn't be resolved from introspection using resource \"" + resource.type.name + "\":", resource);
return acc;
}
var type = getFinalType_1.default(field.type);
if (type.kind !== graphql_1.TypeKind.OBJECT) {
return __assign(__assign({}, acc), (_a = {}, _a[field.name] = record[field.name], _a));
}
var linkedResource = introspectionResults.resources.find(function (r) { return r.type.name === type.name; });
if (linkedResource) {
var linkedResourceData = record[field.name];
if (Array.isArray(linkedResourceData)) {
return __assign(__assign({}, acc), (_b = {}, _b[field.name] = record[field.name].map(sanitizeResource(introspectionResults, linkedResource)), _b[field.name + "Ids"] = record[field.name].map(function (d) { return d.id; }), _b));
}
return __assign(__assign({}, acc), (_c = {}, _c[field.name + ".id"] = linkedResourceData
? record[field.name].id
: undefined, _c[field.name] = linkedResourceData
? sanitizeResource(introspectionResults, linkedResource)(record[field.name])
: undefined, _c));
}
return __assign(__assign({}, acc), (_d = {}, _d[field.name] = record[field.name], _d));
}, {});
}; };
exports.default = (function (introspectionResults, fieldAliasResolver) { return function (aorFetchType, resource) { return function (response) {
var sanitize = sanitizeResource(introspectionResults, resource, fieldAliasResolver);
if (aorFetchType === ra_core_1.GET_LIST ||
aorFetchType === ra_core_1.GET_MANY ||
aorFetchType === ra_core_1.GET_MANY_REFERENCE) {
var data = response.data;
return {
data: data.items.map(sanitize),
total: data.total.aggregate.count,
};
}
else {
var data = response.data;
return { data: sanitize(data.data) };
}
}; }; });
//# sourceMappingURL=getResponseParser.js.map