graphql-compose-mongoose
Version:
Plugin for `graphql-compose` which derive a graphql types from a mongoose model.
45 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRecordHelperArgsOptsMap = void 0;
exports.recordHelperArgs = recordHelperArgs;
const graphql_compose_1 = require("graphql-compose");
const makeFieldsRecursiveNullable_1 = require("../../utils/makeFieldsRecursiveNullable");
const getRecordHelperArgsOptsMap = () => ({
isRequired: 'boolean',
removeFields: 'string[]',
requiredFields: 'string[]',
});
exports.getRecordHelperArgsOptsMap = getRecordHelperArgsOptsMap;
function recordHelperArgs(tc, opts) {
if (!tc || tc.constructor.name !== 'ObjectTypeComposer') {
throw new Error('First arg for recordHelperArgs() should be instance of ObjectTypeComposer.');
}
if (!opts) {
throw new Error('You should provide non-empty options.');
}
const { prefix, suffix } = opts;
let recordITC;
const recordTypeName = `${prefix}${tc.getTypeName()}${suffix}`;
const schemaComposer = tc.schemaComposer;
if (schemaComposer.hasInstance(recordTypeName, graphql_compose_1.InputTypeComposer)) {
recordITC = schemaComposer.getITC(recordTypeName);
}
else {
recordITC = tc.getInputTypeComposer().clone(recordTypeName);
}
if (opts && opts.allFieldsNullable) {
(0, makeFieldsRecursiveNullable_1.makeFieldsRecursiveNullable)(recordITC, { prefix, suffix });
}
if (opts && opts.removeFields) {
recordITC.removeField(opts.removeFields);
}
if (opts && opts.requiredFields) {
recordITC.makeRequired(opts.requiredFields);
}
return {
record: {
type: opts.isRequired ? recordITC.NonNull : recordITC,
},
};
}
//# sourceMappingURL=record.js.map